2011-07-10 9 views
17

しかし、なぜですか?文字列がそれ自身と等しくない

if ('i' == 'і') 
    echo 'good'; 
else 
    echo 'bad'; 

エコー:

>> bad 

あなたはこのスニペットをコピーしてください。あなたが手でそれを書くと、それは動作します。
私は狂ってしまいます。

答えて

56

あなたは卑劣です! 2番目のIは小文字のラテン小文字ではありません。私はそれをhexdumped:

hexdump -C check 
00000000 69 66 20 28 27 69 27 20 3d 3d 20 27 d1 96 27 29 |if ('i' == '..')| 
00000010 0a 20 20 20 20 65 63 68 6f 20 27 67 6f 6f 64 27 |. echo 'good'| 
00000020 3b 0a 65 6c 73 65 0a 20 20 20 20 65 63 68 6f 20 |;.else. echo | 
00000030 27 62 61 64 27 3b 20 20 0a 0a     |'bad'; ..| 
0000003a 

私はあなたが素晴らしいtricksy謎:-) D1 96を見てみましょうよ。 1

+1

+1、私を超え先生を行ってきました。 –

+7

右のiはユニコード文字U + 0456です。「CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I」です。 http://www.fileformat.info/info/unicode/char/search.htm?q=%D1%96&preview=entity –

+0

入手しました。それはユーザーからの入力であり、英語であったので、他の言語のものではないと思った。 – Qiao

1

視覚('i' != 'і')を証明する別の方法!ダンプの

http://jsfiddle.net/naeDE/1/

<pre style="font-size:700%"> 
if ('i' == 'і') 
    echo 'good'; 
else 
    echo 'bad'; 
</pre> 
+0

+1これはフォントに依存しますが、たとえばSafariの場合、この回答のコードでは、ズーム時でさえ、私と区別できません。 (フィドルでは、彼らは私のために今は違うように見えますが、これは必ずしもそうではありません。) –

関連する問題