目录
字符串格式化
1,去空格:trim(),ltrim(),rtrim()
2,格式化字符串:printf(),sprintf()
3,改变字符串中的字符大小写
a).将字符转换为大写:strtoupper()
b).将字符转换为小写 :strtolower()
c).如果第一个字符是字母,就转换成大写:ucfirst()
d).将字符串中每个单词的第一个字母转成大写:ucwords()
4,转义字符串
5,编码字符串
用字符串函数连接和分隔字符串
1,分隔字符串:explode()
2,截取字符串:substr()
字符串比较
1,字符串排序:strcmp(),strcasecmp(),strnatcmp()
2,获得字符串的长度:strlen()
使用字符串函数匹配和替换子字符串
1,在字符串中查找字符串:strstr(),strchr(),strrchr()和strissr()
2,查找字符串的位置:strpos(),strrpos()
3,替换子字符串:str_replace(),substr_replace()
使用正则表达式
1,查找子字符串:ereg(),eregi()
2,替换子字符串:ereg_replace(),eregi_replace()
3,分隔字符串:split()
首页 php教程 php手册 PHP学习:字符串操作和正则表达式

PHP学习:字符串操作和正则表达式

Jun 14, 2016 am 12:02 AM
php学习 代码 字符串 开源 正则表达式 编程 编程语言 软件开发

主要内容:

  1. 字符串格式化;
  2. 用字符串函数连接和分隔字符串;
  3. 字符串比较;
  4. 使用字符串函数匹配和替换子字符串;
  5. 使用正则表达式;

字符串格式化

1,去空格:trim(),ltrim(),rtrim()

trim()函数去掉头尾两边的空格。

ltrim()函数去掉开始的空格。

rtrim()函数去掉结尾的空格。

2,格式化字符串:printf(),sprintf()

printf()函数和sprintf()函数,和echo的功能相同,都会打印字符串。但是它们可以实现更复杂的格式(象C#中string.Format()类似)。

printf()和sprintf()原型如下:

string sprintf(string format[,mixed args..]);
void printf(string format[,mixed args...]);
登录后复制

sprintf()返回格式化后的字符串。而printf直接将结果输出。它们两个的功能类似,所以就已printf()为例。

$boy = "boy";
echo "i am a $boy";
echo '<br />';
printf("i am a %s",$boy);
登录后复制

上面输出的结果一样。

其中format中的类型可以有以下几种:

string-format-type

format中的所有转换类型都以%开始。如果想打印一个“%”符号,必须使用两个“%%”

3,改变字符串中的字符大小写

a).将字符转换为大写:strtoupper()

$str = "i am a boy";
echo strtoupper($str);
登录后复制

b).将字符转换为小写 :strtolower()

$str = "I Am A Boy";
echo strtolower($str);
登录后复制

c).如果第一个字符是字母,就转换成大写:ucfirst()

$str = "i am a boy";
echo ucfirst($str);
登录后复制

d).将字符串中每个单词的第一个字母转成大写:ucwords()

$str = "i am a boy";
echo ucwords($str);
登录后复制

4,转义字符串

addslashes()函数就是把“转换成\”,或者把\转成双斜杠\\等等之类的操作。

$str = '"i am a [\] boy."';
echo addslashes($str);
登录后复制

输出:\"i am a [\\] boy.\"

addslashes()函数相反的函数就是stripslashes()。

5,编码字符串

htmlspecialchars()函数把&,<,>,“等等,编码成浏览器不能解释的字符。

用字符串函数连接和分隔字符串

1,分隔字符串:explode()

它的原型如下:

array explode(string separator,string input[,int limit]);
登录后复制

可以看出返回数组。使用如下:

$str = "1,2,3,4,5";
$arr = explode(',',$str);
foreach($arr as $v){
	echo $v.'<br />';
}
登录后复制

返回1 2 3 4 5

既然有分隔就会有整合。不错,implode()和join()函数实现就是和explode()相反的操作。

$str = "1,2,3,4,5";
$arr = explode(',',$str);
echo implode(',',$arr);
登录后复制

2,截取字符串:substr()

substr()函数的原型如下:

string substr(string input,int start[,int length]);
登录后复制

第二个参数表示截取的开始位置。

第三个参数表示截取的长度。

使用如下:

$str = "i am a boy";
echo substr($str,2);
登录后复制

输出:am a boy

需要注意的是,第二个参数和第三个参数可以为负,如果为负,就意味着从后边开始。

function reverse_i($str){
		for($i=1;$i<=strlen($str);$i++){
			echo substr($str,-$i,1);
		}
		return;
	}
	reverse_i('word');
登录后复制

返回:drow;

字符串比较

1,字符串排序:strcmp(),strcasecmp(),strnatcmp()

strcmp()的原型如下:

int strcmp(string str1,string str2);
登录后复制

如果两个字符串相等,返回0;如果按字典顺序str1在str2后面就返回一个正数,反之。这个函数是区分大小写的。

$str1 = "2";
$str2 = "12";
echo strcmp($str1,$str2);
登录后复制

返回1,说明它是按字典顺序排列的,$str1的第一个字符大于$str2的第一个字符。

strcasecmp()函数除了不区分大小写之外,其他和strcmp()函数一样。

而strnatcmp()则是按照人们习惯的顺序进行排序。它也不区分大小写。

$str1 = "2";
$str2 = "12";
echo strnatcmp($str1,$str2);
登录后复制

返回-1,说明12比2大。

2,获得字符串的长度:strlen()

strlen(“hello”),输出结果为5。

使用字符串函数匹配和替换子字符串

1,在字符串中查找字符串:strstr(),strchr(),strrchr()和strissr()

这些函数看起来张得差不多,真是难记啊!~~

最常用的是strstr()函数,strchr()函数和strstr()函数时一样的,虽然感觉strchr()是查找一个字符的意思。

strstr()函数的原型如下:

string strstr(string haystack,string needle);
登录后复制
第一个参数为整个字符串。
登录后复制

第二个参数为需要查找的子字符串。

如果找到一个匹配,函数会从needle前面返回haystack,否则返回false。如果存在不止一个needle,返回的字符串从出现第一个needle的位置开始。

a).一个精确匹配

$str1 = "To all, I am very sad to tell you that I’ve just been fired.It has been my pleasure to work with all of you and I wish you only the best going forward.";
echo strstr($str1,'very');
登录后复制

输出:very sad to tell you that I’ve just been fired.It has been my pleasure to work with all of you and I wish you only the best going forward.

b).多个匹配

$str1 = "To all, I am very sad to tell you that I’ve just been fired.It has been my pleasure to work with all of you and I wish you only the best going forward";
echo strstr($str1,'been');
登录后复制

输出:been fired.It has been my pleasure to work with all of you and I wish you only the best going forward.

函数strstr()有两个变体。第一个是stristr()函数,它几乎和strstr()函数一样,但区别就是不区分大小写。

第二个是strrchr()函数,它几乎和strstr()一样,但会从最后出现needle的位置的前面返回字符串haystack。

此函数第二个参数为字符。

$str1 = "To all, I am very sad to tell you that I’ve just been fired.It has been my pleasure to work with all of you and I wish you only the best going forward.";
echo strrchr($str1,'w');
登录后复制
输出:ward.

2,查找字符串的位置:strpos(),strrpos()

strpos()函数和strstr()函数的操作类似。但它不是返回一个字符串,而是返回子字符串在整个字符串中的位置。我们平常使用的也是这个。而且比strstr()速度也快。

strpos()函数原型如下:

int strpos(string haystack,string needle,int offset);
登录后复制

第三个参数是可选的,标示开始搜索的位置。

$str1 = "hello word";
echo strpos($str1,'o');
登录后复制

输出:4,位置是从0开始起。也可以用子字符串,这里只是出于演示目的。

$str1 = "hello word";
echo strpos($str1,'o',5);
登录后复制

输出:7。是从位置5开始搜索,也就看不到位置4的那个“o”了。

函数strrpos()也几乎一样,但返回的是子字符串在整个字符串中最后一次出现的位置。

$str1 = "hello word";
echo strrpos($str1,'o');
登录后复制

输出:7。说明“o”在hello word中最后一个位置的7。

这里需要注意一下,PHP中的false等于0,如果strpos()或者strrpos()都返回false(没有找到)或者在第一个字符就找到了(第一个字符的起始位置是0),

那么就区分不出来是找到,还是未找到了。那怎么办呢?只能用“===”恒等式来避免这个问题了。

$str1 = "hello word";
$position = strrpos($str1,'h'); //第一个字符就找到了,$position ==0
if($position === false){
	echo '没有找到';
}else{
	echo $position;
}
登录后复制

3,替换子字符串:str_replace(),substr_replace()

str_replace()函数的原型如下:

mixed str_replace(mixed needle,mixed new_needle,mixed haystack[,int &count]);
登录后复制

第三个参数是可选的。它包含了要执行的替换操作次数。

返回替换过的字符串。

$str1 = "hello word";
echo str_replace('word','china',$str1);
登录后复制

输出:hello china

函数substr_replace()则用来在给定位置中查找和替换字符串中特定的子字符串。原型如下:

string substr_replace(string string,string replacement,int start[,int length]);
登录后复制

这个函数使用字符串replacement替换整个字符串string中的一部分。具体是那一部分则取决于起始位置和可选参数length的值。

需要注意的是,start的值如果是0或者一个正值,就是从字符串开始计算偏移量;如果是一个负值,就从字符串末尾开始的一个偏移量。

使用正则表达式

1,查找子字符串:ereg(),eregi()

ereg()函数的原型如下:

int ereg(string pattern,string search,array [matches]);
登录后复制

在search字符串中查找正则为pattern的表达式,如果发现了与pattern的字表达式相匹配的字符串,这些字符串将会存储在数组matches中,每个数组元素对应一个子表达式。

函数eregi()函数除了不区分大小写外,其功能与ereg()一样。

$str1 = "xxx@gmail.com.cn";
if(!eregi('[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}',$str1)){
	echo '不是正确的Email';
}else{
	echo '正确';
}
登录后复制

2,替换子字符串:ereg_replace(),eregi_replace()

于str_replace()函数一样,只不过这两个使用正则表达式当做参数。

ereg_replace()的原型如下:

string ereg_replace(string pattern,string replacement,string search);
登录后复制
$str1 = "123123@gmail.com.cn";
echo ereg_replace('[A-Z0-9._%+-]+@','**@',$str1);
登录后复制

输出:**@gmail.com.cn

函数eregi_replace除了不区分大小写外,其他与ereg_replace()相同。

3,分隔字符串:split()

函数split()的原型如下:

array split(string pattern,string search[,int max]);
登录后复制

第三个参数为可选,表示进入数组中的元素个数。

返回值是数组。

$str1 = "123123@gmail.com.cn";
$arr = split('\.|@',$str1);
while(list($key,$value) = each($arr)){
	echo '<br />'.$key.'--'.$value;
}
登录后复制

输出:

0--123123
1--gmail
2--com
3--cn

split()函数和explode()函数有点相似,前者是用正则表达式当做分隔符,后者是用字符串当做分隔符。

参考:PHP与MySQL.WEB开发

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

华为仓颉编程语言官方入门教程发布,一文看懂如何获取通用版本 SDK 华为仓颉编程语言官方入门教程发布,一文看懂如何获取通用版本 SDK Jun 25, 2024 am 08:05 AM

本站6月24日消息,在6月21日HDC2024华为开发者大会主题演讲上,华为终端BG软件部总裁龚体正式官宣了华为自研仓颉编程语言。该语言历经5年研发沉淀,现已开启开发者预览。华为开发者官网现已推出仓颉编程语言官方入门教程视频,方便开发者初步上手理解。该教程将带用户体验仓颉、学习仓颉、应用仓颉,包括用仓颉语言估算圆周率、计算2024年各月的干支纪法、看到二叉树在仓颉语言中的N种表达方式,以及用枚举类型实现代数计算、用接口和扩展实现信号系统模拟,还有用仓颉宏扩展出新语法等等。本站附教程访问地址:ht

历经 5 年研发沉淀,华为下一代编程语言'仓颉”正式开启预览 历经 5 年研发沉淀,华为下一代编程语言'仓颉”正式开启预览 Jun 22, 2024 am 09:54 AM

本站6月21日消息,在今日下午的HDC2024华为开发者大会上,华为终端BG软件部总裁龚体正式官宣了华为自研仓颉编程语言,并发布了HarmonyOSNEXT仓颉语言开发者预览版。这是华为首次公开发布仓颉编程语言。龚体表示:“2019年,仓颉编程语言项目在华为诞生,历经5年研发沉淀,大量研发投入,今日终于和全球开发者见面。仓颉编程语言通过现代语言特性的集成、全方位的编译优化和运行时实现、以及开箱即用的IDE工具链支持,为开发者打造友好开发体验和卓越程序性能。”据介绍,仓颉编程语言是一款面向全场景智

华为开启鸿蒙 HarmonyOS NEXT 仓颉编程语言开发者预览版 Beta 招募 华为开启鸿蒙 HarmonyOS NEXT 仓颉编程语言开发者预览版 Beta 招募 Jun 22, 2024 am 04:07 AM

本站6月21日消息,华为自研仓颉编程语言今日正式亮相,官方宣布开启HarmonyOSNEXT仓颉语言开发者预览版Beta招募。本次升级为开发者预览版尝鲜升级,提供仓颉语言SDK、开发者指南以及相关的DevEcoStudio插件,供开发者使用仓颉语言开发、调试及运行HarmonyOSNext应用。报名周期:2024年6月21日-2024年10月21日申请要求:本次HarmonyOSNEXT仓颉语言开发者预览版Beta招募活动,仅面向以下开发者开放报名:1)已在华为开发者联盟完成实名认证;2)完成H

天津大学、北航深度参与华为'仓颉”,推出首个基于国产编程语言的 AI 智能体编程框架'苍穹” 天津大学、北航深度参与华为'仓颉”,推出首个基于国产编程语言的 AI 智能体编程框架'苍穹” Jun 23, 2024 am 08:37 AM

本站6月22日消息,华为昨日面向全球开发者介绍华为自研编程语言——仓颉(Cangjie)。这是仓颉编程语言的首次公开亮相。本站查询获悉,天津大学、北京航空航天大学深度参与了华为“仓颉”的研发。天津大学:仓颉编程语言编译器天津大学智能与计算学部软件工程团队携手华为仓颉团队,深度参与仓颉编程语言编译器的质量保障研究。据介绍,仓颉编译器是与仓颉编程语言共生的基础软件。在仓颉编程语言的筹备阶段,与之相配的高质量编译器成为核心目标之一。随着仓颉编程语言的演化,仓颉编译器也在不断地升级、改进。五年来,天津大

华为自研仓颉编程语言官网和开发文档上线,首次融入鸿蒙生态 华为自研仓颉编程语言官网和开发文档上线,首次融入鸿蒙生态 Jun 22, 2024 am 03:10 AM

本站6月21日消息,在HDC2024华为开发者大会前,华为自研仓颉编程语言正式亮相,仓颉官网现已上线。官网介绍显示,仓颉编程语言是一款面向全场景智能的新一代编程语言,主打“原生智能化、天生全场景、高性能,强安全”。融入鸿蒙生态,为开发者提供良好的编程体验。本站附官网介绍如下:原生智能化内嵌AgentDSL的编程框架,自然语言&编程语言有机融合;多Agent协同,简化符号表达,模式自由组合,支持各类智能应用开发。天生全场景轻量化可缩放运行时,模块化分层设计,内存再小也能装得下;全场景领域扩

华为纯血鸿蒙生态最后一环!自研仓颉编程语言将首次亮相 华为纯血鸿蒙生态最后一环!自研仓颉编程语言将首次亮相 Jun 21, 2024 pm 03:23 PM

6月21日消息,今天下午,华为开发者大会2024将正式揭幕。“纯血鸿蒙”HarmonyOSNEXT自然是重中之重,按照余承东之前透露的规划,今天下午就可能正式宣布公测,普通消费者也能尝鲜“纯血鸿蒙”了。据爆料,首批支持的手机为Mate60系列和Pura70系列。值得注意的是,作为“纯血鸿蒙”,HarmonyOSNEXT去掉了传统的Linux内核和AOSP安卓开源代码,全栈自研。据新浪科技最新报道称,华为还将补齐鸿蒙生态的最后一环,在大

清华大学与智谱AI重磅开源 GLM-4:掀起自然语言处理新革命 清华大学与智谱AI重磅开源 GLM-4:掀起自然语言处理新革命 Jun 12, 2024 pm 08:38 PM

自2023年3月14日开始,ChatGLM-6B以来,GLM系列模型受到了广泛的关注和认可。特别是在ChatGLM3-6B开源之后,开发者对智谱AI推出的第四代模型充满了期待。而这一期待,随着GLM-4-9B的发布,终于得到了充分的满足。GLM-4-9B的诞生为了赋予小模型(10B及以下)更加强大的能力,GLM技术团队经过近半年的探索,推出了这一全新的第四代GLM系列开源模型:GLM-4-9B。这一模型在保证精度的同时,大幅度压缩了模型大小,具有更快的推理速度和更高的效率。GLM技术团队的探索没

Mistral 开源代码模型夺得王座!Codestral疯狂训练超80种语言,国内通义开发者请求出战! Mistral 开源代码模型夺得王座!Codestral疯狂训练超80种语言,国内通义开发者请求出战! Jun 08, 2024 pm 09:55 PM

出品|51CTO技术栈(微信号:blog51cto)Mistral发布了首个代码模型Codestral-22B!该模型的疯狂之处不仅在于训练了80多种编程语言,包括许多代码模型忽略的Swift等。他们的速度没有完全一致。要求使用Go语言编写一个“发布/订阅”系统。这里的GPT-4o正在输出,Codestral已经快到看不清的速度交卷了!由于该模型刚刚推出,尚未公开测试。但根据Mistral的负责人说法,Codestral是目前表现最佳的开源代码模型。图片感兴趣的朋友可以移步:-抱抱脸:https

See all articles