2012-03-15 4 views
8

Я пытаюсь преобразовать символы, такие как:Как преобразовать специальные символы в обычные символы?

ë, ä, ï, ö, etc. 

Для обычных символов, таких как:

e, a, i, o, etc. 

Что такое лучший способ сделать это? Я пробовал много вещей, например preg_replace и str_replace.

Может кто-нибудь помочь мне?

- EDIT -

То, что я пробовал, было:

$ts = array("[À-Å]","Æ","Ç","[È-Ë]","/[Ì-Ï]/","/Ð/","/Ñ/","/[Ò-ÖØ]/","/×/","/[Ù-Ü]/","/[Ý-ß]/","/[à-å]/","/æ/","/ç/","/[è-ë]/","/[ì-ï]/","/ð/","/ñ/","/[ò-öø]/","/÷/","/[ù-ü]/","/[ý-ÿ]/"); 

$tn = array("A","AE","C","E","I","D","N","O","X","U","Y","a","ae","c","e","i","d","n","o","x","u","y"); 

$title = preg_replace($ts, $tn, $text); 
+1

возможно дубликат [PHP транслитерации] (http://stackoverflow.com/questions/1284535/php-transliteration) – Quentin

+0

Вы не показать, что вы пытались :( – Evert

+0

Правильный термин здесь будет акцентированных символов Специальные символы - это такие вещи, как $ # @/\ и т. Д. – lgaud

ответ

25

попробовать это .. работает для меня.

iconv('utf-8', 'ascii//TRANSLIT', $text); 
+3

Я попробовал utf-8 вместо utf8, и это сработало! Спасибо! – Mossawi

+3

utf8 и utf-8 не сработали для меня. Символы заменяются вопросительным знаком, это все. – CREE7EN

+0

@ CREE7EN Попробуйте сначала установить локаль: 'setlocale (LC_CTYPE, 'en_US.UTF8');' После этого кодировка выглядит лучше. – Neograph734

16

Мне нравится ответ соломы, но для полноты это работает для меня.

preg_replace("/&([a-z])[a-z]+;/i", "$1", htmlentities($foo)); 
Смежные вопросы