【问题标题】:php string replace by str_replace issuephp字符串替换为str_replace问题
【发布时间】:2012-10-26 23:12:10
【问题描述】:

我做了一个函数,通过从数组中放入新单词来替换字符串中的单词。

这是我的代码

function myseo($t){
    $a = array('me','lord');
    $b = array('Mine','TheLord');    
    $theseotext = $t;
    $theseotext = str_replace($a,$b, $theseotext);
    return $theseotext;
}

echo myseo('This is me Mrlord');

输出是

这是我的王爷

应该是打印错了

这是我的先生

因为单词 (Mrlord) 不包含在数组中。

我希望我能很好地解释我的问题。任何帮助家伙

问候

【问题讨论】:

  • 您要求替换 lord,它确实做到了
  • 是的,但是 Mrlord 这个词是一个词,我不想改变......代码应该完全改变数组中的词
  • 你会更好地使用正则表达式

标签: php string


【解决方案1】:

根据代码它是正确的,但您希望它按单词隔离。您可以简单地这样做:

function myseo($t){
    $a = array(' me ',' lord ');
    $b = array(' Mine ',' TheLord ');    
    return str_replace($a,$b, ' '.$t.' ');
}

echo myseo('This is me Mrlord');

请记住,这是一种廉价的 hack,因为我用空格包围了替换字符串,以确保双方都得到考虑。这不适用于标点字符串。另一种方法是拆分字符串并单独替换每个单词。

【讨论】:

  • 有什么办法可以做到不前后加空格
  • 肯定的。您可以使用 preg_replace 并编写一个适当的正则表达式来智能地定位。我现在有点忙,所以没有太多时间举例说明,但我可能稍后再说。
【解决方案2】:

str_replace 不仅仅查看完整的单词 - 它查看任何匹配的字符序列。

因此,lord 匹配Mrlord 的后半部分。

【讨论】:

    【解决方案3】:

    请改用str_ireplace,它不区分大小写。

    【讨论】:

      猜你喜欢
      • 2012-06-12
      • 1970-01-01
      • 2021-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-16
      • 2021-10-20
      相关资源
      最近更新 更多