unicode字符串,我停留在比較在PHP兩個Unicode字符串,其既包含特殊字符「O」。一個字符串來自$_GET
,另一個是文件系統的文件夾名稱(scandir()
)。這兩個字符串似乎等於我,使得比較兩個在PHP
var_dump($filter);
var_dump($tail . '/' . $k);
他們
也顯示出他們的平等,但與不同串lenghts(?!):
string '/blöb' (length=7)
string '/blöb' (length=6)
我的片段比較它們看起來如下:
if($filter == ($tail . '/' . $k)) {
/* ... */
}
這是怎麼回事?
其他信息:$tail
是一個空字符串:
string '' (length=0)
這是什麼'的print_r(解壓縮( 「H *」,$ K))'回報在你的兩個案件? –
請記住,某些文件系統使用NFD(或接近它),並且您可能正在考慮NFC。如果你想進行二進制比較,你需要規範化爲同樣的東西。但是對文本進行二進制比較是不明智的。您需要使用UCA進行文本比較。來自OSCON的我上週[Unicode的七種語言對話](http://training.perl.com/OSCON2011/index.html)。 – tchrist