我想实现一个php字符串替换的功能,类似str_replace,但php str_replace是替换所有的匹配,我想实现只替换第一次,该如何做呢?
第一种方法:使用preg_replace
function str_replace_first($from, $to, $content)
{
$from = \'/\'.preg_quote($from, \'/\').\'/\';
return preg_replace($from, $to, $content, 1);
}
echo str_replace_first(\'abc\', \'123\', \'abcdef abcdef abcdef\');
// outputs \'123def abcdef abcdef\'
第二种方法:substr_replace
function str_replace_first($search, $replace, $subject) {
$pos = strpos($subject, $search);
if ($pos !== false) {
return substr_replace($subject, $replace, $pos, strlen($search));
}
return $subject;
}
第三种方法:strpos
function str_replace_limit($search, $replace, $string, $limit = 1) {
$pos = strpos($string, $search);
if ($pos === false) {
return $string;
}
$searchLen = strlen($search);
for ($i = 0; $i < $limit; $i++) {
$string = substr_replace($string, $replace, $pos, $searchLen);
$pos = strpos($string, $search);
if ($pos === false) {
break;
}
}
return $string;
}
用法示例:
$search = \'foo\';
$replace = \'bar\';
$string = \'foo wizard makes foo brew for evil foo and jack\';
$limit = 2;
$replaced = str_replace_limit($search, $replace, $string, $limit);
echo $replaced;
// bar wizard makes bar brew for evil foo and jack
第四种方法:implode
function str_replace_first($search, $replace, $subject) {
return implode($replace, explode($search, $subject, 2));
} 继续阅读与本文标签相同的文章
下一篇 :
快IPO时代,互联网的疯狂与迷茫
-
富士康“败走”印度!只要加班就辞职,郭台铭还能“霸气”起来?
2026-05-15栏目: 教程
-
互联网的下半场,在大小城市里飞驰的电瓶车上
2026-05-15栏目: 教程
-
Robotframework-RED-指定测试报告存放的路径
2026-05-15栏目: 教程
-
株洲首个数据中心站投运
2026-05-15栏目: 教程
-
微软Edge新标签页迎来新布局:新闻区可替换为工作相关内容
2026-05-15栏目: 教程
