函数符
功能
描述
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。