2016-01-13 92 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

相關問題