搜索
首页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
php怎么去除字符串中的所有大写字母php怎么去除字符串中的所有大写字母Sep 26, 2022 pm 07:59 PM

两种去除方法:1、利用preg_replace()执行正则表达式搜索所有大写字母并将其替换为空字符即可,语法“preg_replace('/[A-Z]/','',$str)”。2、利用preg_filter()执行正则表达式搜索所有大写字母并将其替换为空字符即可,语法“preg_filter('/[A-Z]/','',$str)”。

php怎么替换nbsp空格符php怎么替换nbsp空格符Apr 24, 2022 pm 02:55 PM

方法:1、用“str_replace("&nbsp;","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\&nbsp\;||\xc2\xa0)/","其他字符",$str)”语句。

如何学习PHP开发?如何学习PHP开发?Jun 12, 2023 am 08:09 AM

随着互联网的发展,动态网页的需求越来越大。而PHP作为一种主流的编程语言,被广泛应用于Web开发中。那么,对于初学者来说,如何学习PHP开发呢?一、了解PHP的基础知识PHP是一种脚本语言,可以直接嵌入HTML代码中,通过Web服务器进行解析运行。因此,在学习PHP之前,可以先了解HTML、CSS、JavaScript等前端技术基础,以便更好地理解PHP的作

php怎么利用正则排除字符串中的字符php怎么利用正则排除字符串中的字符Dec 15, 2022 pm 03:30 PM

两种方法:1、用preg_replace(),可执行正则表达式的搜索和替换,只需将字符串中匹配的字符替换为空字符即可,语法“preg_replace(正则, "", $str)”。2、用preg_match_all(),可搜索字符串中所有和正则表达式匹配的结果,会将每次的匹配结果放在一个数组$array中,语法“preg_match_all(正则,$str,$array);”。

PHP学习笔记:网络爬虫与数据采集PHP学习笔记:网络爬虫与数据采集Oct 08, 2023 pm 12:04 PM

PHP学习笔记:网络爬虫与数据采集引言:网络爬虫是一种自动从互联网上抓取数据的工具,它可以模拟人的行为,浏览网页并收集所需的数据。PHP作为一种流行的服务器端脚本语言,在网络爬虫和数据采集领域也发挥了重要的作用。本文将介绍如何使用PHP编写网络爬虫,并提供实际的代码示例。一、网络爬虫的基本原理网络爬虫的基本原理是通过发送HTTP请求,接收并解析服务器响应的H

php怎么只获取中文字符php怎么只获取中文字符Apr 28, 2022 pm 08:15 PM

php中可用preg_match_all()配合正则表达式过滤字符串,只获取中文字符;语法“preg_match_all("/[\x{4e00}-\x{9fff}]+/u","$str",$arr);”,会将匹配字符存入“$arr”数组中。

PHP学习笔记:模块化开发与代码复用PHP学习笔记:模块化开发与代码复用Oct 10, 2023 pm 12:58 PM

PHP学习笔记:模块化开发与代码复用引言:在软件开发中,模块化开发与代码复用是相当重要的概念。模块化开发可以将复杂的系统分解成可管理的小模块,提高开发效率和代码可维护性;而代码复用则可以减少冗余代码,提高代码的重用性。在PHP开发中,我们可以通过一些技术手段来实现模块化开发和代码复用。本篇文章将介绍一些常用的技术和具体代码示例,帮助读者更好地理解和应用这些概

javascript怎么正则替换非汉字的字符javascript怎么正则替换非汉字的字符Oct 13, 2022 pm 05:37 PM

在javascript中,可以使用replace()函数配合正则表达式“/[u4e00-u9fa5|,]+/ig”来查找字符串中的所有非汉字字符,并将其替换为其他指定值,语法“字符串对象.replace(/[u4e00-u9fa5|,]+/ig,'指定替换值')”。

See all articles

热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无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

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

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中