我修饰符不适用于外语?

Sim*_*mon 1 php regex encoding modifier

我的字符串是外语.我使用以下正则表达式:

$str = '?? ???? ??? ??? ?????';
$word = '???';

$cont = preg_match_all("/.{0,80}[^\s]*?".preg_quote($word)."[^\s]*?.{0,80}/si",$str,$matched);
print_r($matched);//returns Array ( [0] => Array ( ) ) ..
Run Code Online (Sandbox Code Playgroud)

.

......但如果我设定:

$word = "???";//returns Array ( [0] => Array ( [0] => ?? ???? ??? ??? ????? ) )  
Run Code Online (Sandbox Code Playgroud)

我能做些什么才能在外语中使用I修饰符?

Ali*_*xel 5

尝试添加u修饰符:

$cont = preg_match_all("/.{0,80}[^\s]*?".preg_quote($word)."[^\s]*?.{0,80}/siu",$str,$matched);
Run Code Online (Sandbox Code Playgroud)

  • @Syom:`U`(大写)用于非贪婪匹配,`u`(小写)用于将模式解释为UTF-8编码.请参见http://php.net/reference.pcre.pattern.modifiers. (4认同)
  • 完善.非常感谢.你能解释为什么你的修饰语会影响语言吗?据我所知,它只会颠倒贪婪吗? (3认同)