0

我正在替换与 '##' in 匹配的单词$newstring,这会成功替换 localhost 上的所有单词,但当我在实时服务器上运行此代码时会忽略许多单词。

有什么建议可能导致此问题或我该如何解决?

  for($i=0;$i<count($result);$i++)
      {
       $commanword = trim(strtolower($result[$i]['Words']));
       $newstring = preg_replace("/\b".$commanword."\b/i", '##', $newstring);
      }
4

3 回答 3

1

尝试这个:

for($i=0;$i<count($result);$i++)
  {
   $commanword = trim(strtolower($result[$i]['Words']));
   $pre = "/\\b" . $commanword . "\\b/i";
   $newstring = preg_replace($pre, '##', $newstring);
  }
于 2013-09-19T12:09:41.547 回答
1

尝试这个:

foreach($result as $r) {
  $commanword = trim(strtolower($r['Words']));
  $newstring = preg_replace("/\\b$commanword\\b/i", '##', $newstring);
}

那里有一些风格上的变化。(我想要一个更好的 $r 名称,但我不知道它代表什么)。但是,实质性的变化是您在 '\b' 模式上缺少反斜杠。双引号字符串的解释在进入正则表达式函数之前将“\b”转换为“b”。

于 2013-09-19T12:09:50.920 回答
1

嘿朋友我已经修好了。这是 PCRE(Perl 兼容正则表达式)的问题 Supportdisabled on our server now it works on server when I make it enable 谢谢你们mc0e和Joran Den Houting

于 2013-09-20T10:25:35.207 回答