2014-11-21 103 views
0

我有如下所示的代碼:如何將Unicode全角字符與普通字符進行比較?

<?php 
$str1 = 'xxxxxID'; 
$str2 = 'xxxxxID'; 

$bool = ($str1 == $str2); 
var_dump($bool);//==> need return true. 
?> 

請告訴我,如何比較那些字符串?

+0

無論「更新」部分是什麼意思,請刪除它,併發佈一個新的問題,如果你有一個不同的問題(你真的需要工作的問題的表述)。 – 2014-11-21 11:15:36

+0

我有變化。對於那個很抱歉。 – 2014-12-10 03:04:31

回答

1

您正在尋找音譯。您可以使用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字符工作,可能會出現一些奇怪的結果。

+0

謝謝。這行得通。 – 2014-11-21 10:05:22

-1

使用mb_convert_encoding()把兩個字符串相同的多字節編碼(UTF-8或$ STR2的一個),那麼你可以比較他們像往常一樣,用==

+0

這不起作用。 $ str1是ASCII和ASCII與前面的127個字符的unicode相同。從unicode轉換爲ascii不起作用,因爲ascii沒有'ID' – BreyndotEchse 2014-11-21 10:01:49

0

strlen();將返回數字符串中的字節數。然而,你的問題有點不清楚。

+0

的代碼表示,對不起,但我的問題標題已被某人取代。 – 2014-11-21 10:03:56

+0

@NolandPhạm是的。我希望你不介意。稱他們爲「2字節」的字符並不清楚。像ABC這樣的字符稱爲「[fullwidth](https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms#Chart)」。 – Boann 2014-11-21 10:10:15

+0

謝謝。我的英文很差。對不起。 – 2014-11-21 10:12:08

相關問題