2015-02-23 3 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 и делать массивный массив. Мало того, что это будет головная боль (откуда я знаю, что я не пропустил один?), Но также и потому, что это человек, делающий это, чрезвычайно подверженный ошибкам (что, если я немного ошибаюсь?). Поэтому я спросил программно. знак равно –

0

Вы можете использовать "UTF8 :: str_transliterate" -> Вы можете установить его с помощью композитора ->https://packagist.org/packages/voku/portable-utf8

например: UTF8 :: str_transliterate ('дежа σσς iıii ') // 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-lazım-mahkum"

Mfg Ларс :)

Смежные вопросы