我们知道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);

点赞(14) 打赏

评论列表 共有 0 条评论

暂无评论
返回
顶部