我有兩個波斯語單詞是一樣的,但它們不匹配在一起,爲什麼? 我該怎麼做在PHP搭配在一起它們(當然,這是一個例子)比較PHP中的波斯語字符
$wordd1='فريدونكنار';
$wordm2='فریدونکنار';
if($wordd1 == $wordm2){
echo 'ok'; //i want this result
}else{
echo 'no';
}
我有兩個波斯語單詞是一樣的,但它們不匹配在一起,爲什麼? 我該怎麼做在PHP搭配在一起它們(當然,這是一個例子)比較PHP中的波斯語字符
$wordd1='فريدونكنار';
$wordm2='فریدونکنار';
if($wordd1 == $wordm2){
echo 'ok'; //i want this result
}else{
echo 'no';
}
不能刪除此,但將其標記爲錯誤回答! ! (閱讀評論) 試試這樣說:
mb_internal_encoding("UTF-8");
$wordd1=utf8_decode('فريدونكنار');
$wordm2=utf8_decode('فریدونکنار');
if($wordd1===$wordm2){
echo 'ok';
}else{
echo 'no';
}
這個版本的作品。
strcmp
是長的路要走,但它不是句話之後B安全,因爲:
返回< 0如果str1小於str2的;如果str1大於 str2,則爲0;如果相等,則爲0。
所以我改變了我的答案。
$wordd1='فريدونكنار';
$wordm2='فریدونکنار';
$result=strcmp($wordd1,$wordm2);
if($result===0){
echo 'ok';
}else{
echo 'no';
}
strcmp()函數比較兩個字符串。 strcmp()函數是二進制安全的並區分大小寫。這個函數返回0,這兩個字符串是相等的。
你測試了嗎? – JustOnUnderMillions
在這裏看到更多.... http://www.w3schools.com/php/showphp.asp?文件名= demo_func_string_strcmp –
你在測試這個值在這裏的帖子?如果不這樣做http://sandbox.onlinephpfunctions.com/ – JustOnUnderMillions
我不知道你的語言是如何工作的,但是看起來你的字符串中看起來很像字符。
function illustrate_bytes($str1, $str2) {
for($i=0; $i<strlen($str1); $i++) {
printf("%02x %08d : %02x %08d : %s\n",
ord($str1[$i]), decbin(ord($str1[$i])),
ord($str2[$i]), decbin(ord($str2[$i])),
$str1[$i] === $str2[$i] ? 'same' : 'diff');
}
}
illustrate_bytes('ﻑﺮﻳﺩﻮﻨﻜﻧﺍﺭ', 'ﻑﺭیﺩﻮﻧکﻥﺍﺭ');
輸出:
d9 11011001 : d9 11011001 : same
81 10000001 : 81 10000001 : same
d8 11011000 : d8 11011000 : same
b1 10110001 : b1 10110001 : same
d9 11011001 : db 11011011 : diff
8a 10001010 : 8c 10001100 : diff
d8 11011000 : d8 11011000 : same
af 10101111 : af 10101111 : same
d9 11011001 : d9 11011001 : same
88 10001000 : 88 10001000 : same
d9 11011001 : d9 11011001 : same
86 10000110 : 86 10000110 : same
d9 11011001 : da 11011010 : diff
83 10000011 : a9 10101001 : diff
d9 11011001 : d9 11011001 : same
86 10000110 : 86 10000110 : same
d8 11011000 : d8 11011000 : same
a7 10100111 : a7 10100111 : same
d8 11011000 : d8 11011000 : same
b1 10110001 : b1 10110001 : same
所以外觀相似是:
\xd9\x8a
: 「ي」 和\xdb\x8c
: 「ی」\xd9\x83
: 「ك」 和\xda\xa9
:「ک」這些字符串看起來很相似,但它們並不相同!
第一個字符串包含字符:
U+641 'ف' ARABIC LETTER FEH
U+631 'ر' ARABIC LETTER REH
U+64A 'ي' ARABIC LETTER YEH <- 1
U+62F 'د' ARABIC LETTER DAL
U+648 'و' ARABIC LETTER WAW
U+646 'ن' ARABIC LETTER NOON
U+643 'ك' ARABIC LETTER KAF <- 2
U+646 'ن' ARABIC LETTER NOON
U+627 'ا' ARABIC LETTER ALEF
U+631 'ر' ARABIC LETTER REH
第二字符串包含字符:
U+641 'ف' ARABIC LETTER FEH
U+631 'ر' ARABIC LETTER REH
U+6CC 'ی' ARABIC LETTER FARSI YEH <- 1
U+62F 'د' ARABIC LETTER DAL
U+648 'و' ARABIC LETTER WAW
U+646 'ن' ARABIC LETTER NOON
U+6A9 'ک' ARABIC LETTER KEHEH <- 2
U+646 'ن' ARABIC LETTER NOON
U+627 'ا' ARABIC LETTER ALEF
U+631 'ر' ARABIC LETTER REH
在第三和第七位置(標記爲<- 1
和<- 2
)的字符不相同。
波斯語中有兩個字符,每個字符都有兩個不同的字符值,其中第二個值來自阿拉伯字符。
首先是ی
和ي
。另一個是ک
和ك
。
你必須用第一個替換所有的第二個。
一個示例代碼: $str = str_replace('ی','ي',$str);
使用功能,可替代同類找字,則比較兩個字符串。
function replaceSimilarChars($srting)
{
$srting = str_replace('ي', 'ی', $srting);
$srting = str_replace('ك', 'ک', $srting);
// any other replacement
return $srting;
}
如何在MySQL的類似查詢中使用它? –
多數民衆贊成在你的問題有點偏離,可以說。我必須自己開發並測試它,以便從中進行「LIKE」查詢,並且還取決於數據庫連接的設置方式。 Sry基因。 – JustOnUnderMillions
我使用codeigniter.Its默認設置:http://www.codeigniter.com/userguide2/database/active_record.html –