preg_match和关键字中的特殊字符不起作用

时间:2011-10-13 14:40:50

标签: php html regex

2 个答案:

答案 0 :(得分:4)

尝试使用u修饰符启用UTF8支持:

  

你(PCRE8)
  此修饰符打开与Perl不兼容的PCRE的其他功能。模式字符串被视为UTF-8。此修饰符可从Unix上的PHP 4.1.0或更高版本以及win32上的PHP 4.2.3获得。自PHP 4.3.5起,检查模式的UTF-8有效性。

http://ch.php.net/manual/en/reference.pcre.pattern.modifiers.php

答案 1 :(得分:1)

我怀疑你的问题与多字节字符和编码有关。

来自:multi-byte function to replace preg_match_all?

  

您是否看过mb_ereg?

     

此外,您可以将UTF-8编码的字符串传递给preg_match   使用u修饰符,这可能是那种多字节支持你   需要。另一种选择是编码为UTF-8然后编码   结果回来了。

在这种情况下,u修饰符将像这样添加

if (preg_match("/\b".preg_quote($kw_to_search_for)."\b/iu", $search_strings[$i])) {
    // found
}