2016-01-13 50 views
1

这两个字符串似乎是相同的。为什么正则表达式匹配一个而不是另一个?正则表达式不适用于某些字符串

$str1 = "NЕТ"; 
$str2 = "NET"; 
if (preg_match("/NET/",$str1)){ 
    echo "Match string 1!"; 
} 
else { 
    echo "Does not match string 1!"; 
} 
if (preg_match("/NET/",$str2)){ 
    echo "Match string 2!"; 
} 
else { 
    echo "Does not match string 2!"; 
} 

输出:

Does not match string 1!Match string 2! 
+4

'!'ü怎能错过!!!!!!!!!!!!!! – vks

+0

那是什么输出? – iamnotmaynard

+0

我应该在哪里添加它? – Justin

回答

3

扰流警报:$str1$str2NOT相同。

这是因为人物,虽然他们看起来是一样的,实际上是不同的:

$str1 = "NЕТ"; echo bin2hex($str1), "\n"; 
$str2 = "NET"; echo bin2hex($str2), "\n"; 

输出:

4ed095d0a2 
4e4554 

事实上,如果你要打印出所有的字符在每个名字字符串以及它们的Unicode代码点,您将获得第一个块为$str1,第二个块为$str2

78 LATIN CAPITAL LETTER N 
1045 CYRILLIC CAPITAL LETTER IE 
1058 CYRILLIC CAPITAL LETTER TE 

78 LATIN CAPITAL LETTER N 
69 LATIN CAPITAL LETTER E 
84 LATIN CAPITAL LETTER T 
+0

呃,unicode!我是多么爱你! :) – hek2mgl

+0

啊,不知道Java的角色有这种能力。谢谢。 – iamnotmaynard

相关问题