php正则表达式基本知识与应用详解【经典教程】(3)

函数符 功能 描述
str_replace(find,replace,string,count)   使用一个字符串替换字符串中的另一些字符。   find 必需。规定要查找的值。replace 必需。规定替换 find 中的值的值。string 必需。规定被搜索的字符串。count 可选。一个变量,对替换数进行计数。  
substr_replace(string,replacement,start,length)   把字符串的一部分替换为另一个字符串。适合用于替换自定位置的字符串。   string 必需。规定要检查的字符串。replacement 必需。规定要插入的字符串。start 必需。规定在字符串的何处开始替换。  

使用正则

如果使用正则替换,php中提供了preg_replace _callback和preg_replace 函数,preg_replace 原型如下:

mixed preg_replace ( mixed pattern,mixedreplacement , mixed subject[,intlimit = -1 [, int &count]])

函数功能描述:在字符串subject中,查找pattern,然后使用replacement 去替换,如果有limit则代表限制替换limit次。pregreplacecallback与pregreplace功能相识,不同的是pregreplaceback使用一个回调函数callback来代替replacement.−例1将字符串”hello,中国”中的hello替换为′你好′;如果不是用正则:str='hello,中国';

str=strreplace(′hello′,′你好′,str)

或是使用

str=substrreplace(str,'你好',0,5)

使用正则

pattern=′/hello/′;str=preg_replace (pattern,′你好′,str);

- 例2

去除字符串”gawwenngeeojjgegop”中连续相同的字母

$str='gawwenngeeojjgegop'; $pattern='/(.)\1/'; $str=preg_replace($pattern,'',$str);

解析:当然这样可能会遇到,当第一次去除了重复了字符串后,又出来重复的字符串。如字符串味'gewwenngeeojjgegop',针对这中问题,当然,这样的话,通过判断,继续替换下去。

例3

将字符串中”age13gegep3iorji65k65k”;中出现的连续两个数字改为第二个数字,如字符串中13被改为3

$str='age13gegep3iorji65k65k'; $pattern='/(\d)(\d)/'; $str=preg_replace($pattern,'$2', $str);

解析:$n在正则表达式外使用反向引用。n代表第几次匹配到的结果。

php中字符串分割

不使用正则

php提供了explode函数去分割字符串,与其对应的是implode。关于explode原型如下:
array explode ( string delimiter,stringstring [, int $limit ] )
delimiter:边界上的分隔字符。
string:输入的字符串。
limit:如果设置了 limit 参数并且是正数,则返回的数组包含最多 limit 个元素,而最后那个元素将包含 string 的剩余部分。如果 limit 参数是负数,则返回除了最后的 -limit 个元素外的所有元素。如果 limit 是 0,则会被当做 1。

使用正则

关于通过正则表达式进行字符串分割,php提供了split、preg_split 函数。preg_split() 函数,通常是比 split() 更快的替代方案。

array preg_split ( string pattern,stringsubject [, int limit=−1[,intflags = 0 ]] )

例题

将字符串 ‘‘按照'https://www.jb51.net/'进行分割

解法一:

$str='http://blog.csdn.net/hsd2012/article/details/51152810'; $str=explode('https://www.jb51.net/', $str);

解法二:

$str='http://blog.csdn.net/hsd2012/article/details/51152810'; $pattern='/\//'; /*因为/为特殊字符,需要转移*/ $str=preg_split ($pattern, $str);

php中贪婪匹配与惰性匹配

贪婪匹配:就是匹配尽可能多的字符。
比如,正则表达式中m.*n,它将匹配最长以m开始,n结尾的字符串。如果用它来搜索manmpndegenc的话,它将匹配到的字符串是manmpndegen而非man。可以这样想,当匹配到m的时候,它将从后面往前匹配字符n。
懒惰匹配:就是匹配尽可能少的字符。
有的时候,我们需要并不是去贪婪匹配,而是尽可能少的去匹配。这时候,就需要将其转为惰性匹配。怎样将一个贪婪匹配转为惰性匹配呢?只需要在其后面添加一个”?”即可。如m.*?n将匹配manmpndegenc,匹配到的字符串是man。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/97d84dbcf3db0911be810efa059cd787.html