时间:2021-05-26
我们都知道,在PHP里Strtr,strreplace等函数都可以用来替换,不过他们每次替换的时候都是全部替换,举个例子:
"abcabbc",这个字符串如果使用上边的函数来把其中的b替换掉,那么他会全部替换掉,但是如果你想只替换一个或两个怎么办呢?看下边的解决方法:
这是个比较有点意思的问题,正好之前也做过类似的处理,当时我是直接利用preg_replace实现的。
mixed preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit] )
在 subject 中搜索 pattern 模式的匹配项并替换为 replacement。如果指定了 limit,则仅替换 limit 个匹配,如果省略 limit 或者其值为 -1,则所有的匹配项都会被替换。
因为preg_replace的第四个参数可以实现替换次数的限制,所以这个问题这样处理很方便。但是在查看php.net上关于str_replace的函数评论后,从中居然也可以挑出几个有代表性的函数来。
str_replace_once
思路首先是找到待替换的关键词的位置,然后利用substr_replace函数直接替换之。
复制代码 代码如下:
<?php
functionstr_replace_once($needle,$replace,$haystack){
//Looksforthefirstoccurenceof$needlein$haystack
//andreplacesitwith$replace.
$pos=strpos($haystack,$needle);
if($pos===false){
return$haystack;
}
returnsubstr_replace($haystack,$replace,$pos,strlen($needle));
}
?>
str_replace_limit
还是利用preg_replace,只不过它的参数更象preg_replace了,而且对某些特殊字符做了转义处理,通用性更好。
复制代码 代码如下:
<?
functionstr_replace_limit($search,$replace,$subject,$limit=-1){
//constructingmask(s)...
if(is_array($search)){
foreach($searchas$k=>$v){
$search[$k]='`'.preg_quote($search[$k],'`').'`';
}
}
else{
$search='`'.preg_quote($search,'`').'`';
}
//replacement
returnpreg_replace($search,$replace,$subject,$limit);
}
?>
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
定义和用法str_replace()函数使用一个字符串替换字符串中的另一些字符。语法str_replace(find,replace,string,count)
一般进行替换操作都这样:复制代码代码如下:str=str.replace(字符串一,字符串二)不难发现一个问题,如果str要循环替换很多次,下一次替换时会累加上
在对于字符串的替换上,我们已经学过了不少的方法。但在做练习题的时候,我们会对多个字符串进行替换。从方法的实用性来说,str_replace就非常适合处理多个字符
下面通过本文给大家分享PHP字符串替换str_replace()函数4种用法,具体内容如下所示:mixedstr_replace(mixed$search,mi
介绍:preg_replace执行正则表达式的搜索和替换,如果只是单纯的匹配字符串建议使用str_replace(),因为其执行效率高的多。mixedpreg_