我们知道php中str_replace函数可以用来替换字符串,不过每次替换都是全部替换。如“hello world”,将“l”替换为“x”,可以用str_replace("l","x","hello world"),这时会帮字符串中"l"都会替换为"x",如果只想替换一次或两次该怎么操作?
1、使用preg_replace函数来实现替换
preg_replace函数有个参数 $limit,可以控制替换的次数。
$str=preg_replace("/l/","x","hello world",1);
2、首先是找到待替换的关键词的位置,然后利用substr_replace函数直接替换。
function str_replace_once($needle, $replace, $haystack) {
$pos = strpos($haystack, $needle);
if ($pos === false) {
return $haystack;
}
return substr_replace($haystack, $replace, $pos, strlen($needle));
}
3、还是利用preg_replace,只不过它的参数更象preg_replace了,而且对某些特殊字符做了转义处理,通用性更好。
function str_replace_limit($search, $replace, $subject, $limit=-1) {
if (is_array($search)) {
foreach ($search as $k=>$v) {
$search[$k] = '/' . preg_quote($search[$k],'/') . '/';
}
} else {
$search = '/' . preg_quote($search,'/') . '/';
}
return preg_replace($search, $replace, $subject, $limit);
}
echo str_replace_limit('l','x','hello world',1);
发表评论 取消回复