我有如下所示的代碼:如何將Unicode全角字符與普通字符進行比較?
<?php
$str1 = 'xxxxxID';
$str2 = 'xxxxxID';
$bool = ($str1 == $str2);
var_dump($bool);//==> need return true.
?>
請告訴我,如何比較那些字符串?
我有如下所示的代碼:如何將Unicode全角字符與普通字符進行比較?
<?php
$str1 = 'xxxxxID';
$str2 = 'xxxxxID';
$bool = ($str1 == $str2);
var_dump($bool);//==> need return true.
?>
請告訴我,如何比較那些字符串?
您正在尋找音譯。您可以使用iconv:
<?php
$str1 = 'xxxxxID';
$str2 = 'xxxxxID';
$str1Translit = iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $str1);
$str2Translit = iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $str2);
$bool = ($str1Translit == $str2Translit);
var_dump($bool);//==> need return true.
但是你應該知道,這並不爲每一個Unicode字符工作,可能會出現一些奇怪的結果。
謝謝。這行得通。 – 2014-11-21 10:05:22
使用mb_convert_encoding()把兩個字符串相同的多字節編碼(UTF-8或$ STR2的一個),那麼你可以比較他們像往常一樣,用==
這不起作用。 $ str1是ASCII和ASCII與前面的127個字符的unicode相同。從unicode轉換爲ascii不起作用,因爲ascii沒有'ID' – BreyndotEchse 2014-11-21 10:01:49
strlen();
將返回數字符串中的字節數。然而,你的問題有點不清楚。
的代碼表示,對不起,但我的問題標題已被某人取代。 – 2014-11-21 10:03:56
@NolandPhạm是的。我希望你不介意。稱他們爲「2字節」的字符並不清楚。像ABC這樣的字符稱爲「[fullwidth](https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms#Chart)」。 – Boann 2014-11-21 10:10:15
謝謝。我的英文很差。對不起。 – 2014-11-21 10:12:08
無論「更新」部分是什麼意思,請刪除它,併發佈一個新的問題,如果你有一個不同的問題(你真的需要工作的問題的表述)。 – 2014-11-21 11:15:36
我有變化。對於那個很抱歉。 – 2014-12-10 03:04:31