发布日期:2018-03-26
怎样用str_replace,使它只作用于第一个匹配项?+ 查看更多
怎样用str_replace,使它只作用于第一个匹配项?
+ 查看更多
发布日期:2018-02-24 17:50
分类:PHP
浏览次数:79
我想要这种版本的str_replace(),它只替换在$subject中出现的第一个$search。有没有一个针对这个问题的简单方案,还是我需要用不正常的方法?
回答
使用preg_replace可以做到:
function str_replace_first($from, $to, $subject) { $from = '/'.preg_quote($from, '/').'/'; return preg_replace($from, $to, $subject, 1); } echo str_replace_first('abc', '123', 'abcdef abcdef abcdef'); // outputs '123def abcdef abcdef'关键是可选的第四个参数[Limit]。在文档中是这样描述的:
[Limit] - 每个模版在目标字符串中被替换的最大次数,默认是-1(没有限制)。
你也可以看看zombat的回答来得到更高效的方法(大约快三四倍)。