這是我的代碼:
static private function removeAccentedLetters($input){
for ($i = 0; $i < strlen($input); $i++) {
$input[$i]=self::simplify($input[$i]);
}
return $input;
}
static private function simplify($in){
$ord=ord($in);
switch ($ord) {
case 193: //Á...
return 'A';
case 98: //b
return 'a';
default:
return $in;
}
}
確定。這是行不通
case 193: //Á...
return 'A';
位而這是做位:
case 98: //b
return 'a';
這些只是用於測試目的。
誰能告訴我發生了什麼事?我之前有類似的錯誤,但現在我沒有在代碼本身中使用任何擴展的ASCII,這是之前的錯誤原因。
我在想它必須與字符編碼有關,但我不確定。順便說一句,我在Eclipse中進行編碼,據我所知,我使用的字符編碼是Cp1252。
哦,是的,代碼應該消除任何重音符號,如甲A,並與他們的基本vogals,即A-拆換>一
在此先感謝
這很有道理。是否有另外一種方法可以通過一條不會被這個愚弄的字符串循環? – 2010-09-16 07:05:13
@Felipe看看'mb_strlen()'。不過,我仍然認爲你應該看看現有的解決方案。如果你真的熱衷於推出自己的產品,請檢查一個已知的工作人員並對其進行分析。玩的開心! – alex 2010-09-16 07:09:09
* @ Alex:*您的搜索鏈接Google不起作用。應該是:http://www.google.com/search?q=php+transliteration – MikeSchinkel 2010-10-12 03:35:02