当我输入以下字符串时,preg_match
函数出现了奇怪的情况。我使用 'u' 标志是因为我要匹配一个混合的日语字符串。
<?php
$subject="/hello/カメラ/";
$pattern='#^/hello/([\p{Han}\p{Katakana}\p{Hiragana}\w\-]+)/#u';
$result=preg_match($pattern,$subject);
echo $result; // 1
$subject="/hello/カレンダー/";
$pattern='#^/hello/([\p{Han}\p{Katakana}\p{Hiragana}\w\-]+)/#u';
$result=preg_match($pattern,$subject);
echo $result; // 0
?>
请注意,两个$pattern变量都具有相同的构造'/hello/katakana/'。那么,为什么第一个$result是1而第二个是0呢?
这是一个bug吗?
更新: 我在Mac上运行PHP版本5.5.24。