所以我有这样的文字:
"word1 word2 word3 etc"
我有一个带有一组替换物的数组,我必须像这样携带:
[
"word1 word2" => "<a href="someurl">word1 word2</a>",
"word2" => "<a href="someurl">word2</a>",
"word3" => "<a href="someurl">word3</a>"
]
基本上对于某些词(或它们的组合),我必须添加一些标签。
我需要避免这种情况,因为“word1 word2”已经像这样被替换了:
<a href="someurl">word1 word2</a> word3 etc
我需要避免它变成这样:
"<a href="someurl">word1 <a href="someurl">word2</a></a> word3 etc"
^^^ another replacement inside "word1 word2"
如何避免替换已在其他替换中找到的较小字符串?
使用 str_replace 的实时代码不起作用:
$array = [
"word1 word2" => "<a href='someurl'>word1 word2</a>",
"word2" => "<a href='someurl'>word2</a>",
"word3" => "<a href='someurl'>word3</a>"
];
$txt = "word1 word2 word3 etc";
echo str_replace(array_keys($array),array_values($array),$txt);
http://sandbox.onlinephpfunctions.com/code/85fd62e88cd0131125ca7809976694ee4c975b6b
正确的输出:
<a href="someurl">word1 word2</a> <a href="someurl">word3</a> etc
慕标琳琳
动漫人物
蛊毒传说