一尘不染

使用str_replace使其仅作用于第一个匹配项?

php

我想的一个版本str_replace()是只替换第一次出现$search$subject。是否有一个简单的解决方案,还是我需要一个hacky解决方案?


阅读 283

收藏
2020-05-26

共1个答案

一尘不染

可以用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'

不可思议的地方是可选的第四个参数[Limit]。从文档中:

[限制]-每个主题字符串中每个模式的最大可能替换量。默认为-1(无限制)。

2020-05-26