如何调整下面的代码以使用preg_replace替换第二个字符?
$out = 'Home » Food » Fruit';
$out = preg_replace('/»/', 'Category:', $out, 1);
提前致谢!
答案 0 :(得分:1)
要仅删除第二次出现的字符串,您需要匹配第一个字符串,然后匹配并捕获所有文本到第二个,然后使用反向引用替换。
使用
$out = 'Home » Food » Fruit';
$out = preg_replace('/(»[^»]*)»/', '$1Category:', $out, 1);
echo $out;
请参阅PHP demo。最后一个$limit
参数将preg_replace
仅替换第一个匹配。
<强>详情:
(»[^»]*)
- 捕获第1组匹配
»
- 文字»
[^»]*
- *
»
量词)
»
- 文字»
请参阅regex demo。
仅在Boost / PCRE(以及最新版本的Onigmo)中支持的变体,也适用于您:
/»[^»]*\K»/
见another regex demo。 \K
将丢弃当前迭代中到目前为止匹配的所有文本。所以你只能在比赛中用你的替换字符串替换关闭的V形符号。