Che*_*one 4 php string-comparison
我有两个看似相同的值的字符串.一个存储为数组中的键,另一个存储在另一个不同的数组中.我使用==,===和strcmp比较两者.所有都将它们视为不同的字符串 我做了一个var_dump,这就是我得到的.
string(17) "Valentine’s Day"
string(15) "Valentine's Day"
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么第一个字符串是17个字符,第二个字符串是15个?
更新:当我从我的编辑器中粘贴它时,这稍微明显一点,它的字体使两个不同的撇号几乎无法区分.
第一个字符串包含撇号的Unicode字符,而第二个字符串只有常规的ASCII字符.
Unicode字符占用更多空间.
如果你ord()在每个字符上运行PHP 函数,你会看到每个字符都有不同的值:
echo ord("’"); //226 This is just the first 2 bytes (see comments below for details from ircmaxell)
echo ord("'"); //27
Run Code Online (Sandbox Code Playgroud)