【发布时间】:2015-09-04 02:15:00
【问题描述】:
我试图同时用 strtr 替换一个字符串,但我遇到了一个问题。如果同时被替换的字母紧挨着另一个同时被替换的字母,则它不会替换第一个字母之后的字母。我能做些什么来解决这个问题?谢谢。
$text = " no bacon cats nobody ";
$text = strtr($text, array(" no " => " bacon ", " bacon " => " no ", " cats " => " dogs "));
echo $text;
预期结果
bacon no dogs nobody
实际结果
bacon bacon dogs nobody
P.S:我必须确保这些词不是另一个词的一部分。这就是为什么会有空白。例如,单词“no”是“nobody”的一部分,如果你替换了字符串中的所有“no”,它也会替换像“nobody”这样的词;
【问题讨论】:
-
字符串中的空格数量不一致
" a b c " -
和以前一样的问题:空格太多。为什么你的数组中有这些额外的空间?这就是导致您的问题的原因
-
@CodeGodie 确保这些词不是另一个词的一部分。例如,单词“no”是“nobody”的一部分,如果你替换了字符串中的所有“no”,它也会替换像“nobody”这样的单词;
-
明白了。您应该编辑您的问题并将其放在那里,这将有助于我们为您提供更好的答案
-
@CodeGodie 好的。我更新了它。现在看起来有点复杂。
标签: php regex replace preg-replace strtr