2015-02-23 78 views
0

所以我試圖將拉丁字母,如á,é等轉換成非拉丁音譯(a,e等)我知道有以下幾點: PHP replacing special characters like à->a, è->ePHP-UTF8到基本編碼更改

但是他們似乎都沒有幫助...這是我擁有的和他們產生的結果。

echo $this->data['last_name']; 
$last_name = iconv('UTF-8', 'ISO-8859-1//TRANSLIT//IGNORE', $this->data['last_name']); 
echo $last_name; 
$last_name = mb_convert_encoding($this->data['last_name'], 'ISO-8859-1'); 
echo $last_name; 
$last_name = iconv('UTF-8', 'ascii//TRANSLIT//IGNORE', $this->data['last_name']); 
echo $last_name; 

----- 

Dérmenjian 
D�rmenjian 
D�rmenjian 
D?rmenjian 

任何想法我做錯了什麼,可能如何解決它?我總是可以只是做一個巨大的陣列,但我更喜歡一種編程方法對這個問題...

(不知道它的確與衆不同,但我們使用PHP 5.5)

回答

0

原來,解決方案是該區域設置不正確。據: http://php.net/manual/en/function.iconv.php#74101 默認爲:C我的服務器上,所以通過執行以下我得到它的工作:

setlocale(LC_ALL,'en_US.UTF8'); 

我以前曾嘗試過「EN_US」,那就是失敗。

0

,或者你只是使用:

str_replace(array("á", "é"), array("a", "e"), $subject); 
+0

我想你已經錯過了,我說編程部分。我可以很容易地做一個大規模的陣列,但是我必須坐在那裏,並採取每一個非ASCII字符,並製作一個巨大的陣列。這不僅會令人頭疼(我怎麼知道我沒有錯過?),而且因爲它是一個人做的事情,所以極易出錯(如果我做得有點錯誤呢?)。因此,我以編程方式提問。 =) – 2015-02-24 07:41:41

0

您可以使用 「UTF8 :: str_transliterate」 - >您可以通過作曲家安裝 - >https://packagist.org/packages/voku/portable-utf8

例如:UTF8 :: str_transliterate('似曾相識σσς iiiii')// deja sss iiii

...或者您可以使用 - >https://packagist.org/packages/voku/urlify也可以通過作曲家,在這裏您可以更喜歡一種語言。

例如:URLify :: filter('Cağaloğlu,çalıştığı,müjde,lazım,mahkûm',60,'tr'); // 「Cagaloglu-calistigi-mujde-lazim-mahkum」

廠家批號拉爾斯:)