2015-02-23 82 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”

厂家批号拉尔斯:)