2012-03-15 10 views
8

Sto cercando di convertire i caratteri come:Come convertire caratteri speciali in caratteri normali?

ë, ä, ï, ö, etc. 

Per caratteri normali come:

e, a, i, o, etc. 

Qual è il modo migliore per farlo? Ho provato molte cose, come preg_replace e str_replace.

Qualcuno può darmi una mano?

- EDIT -

Quello che ho cercato, era:

$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

possibile duplicato del [PHP Transliteration] (http://stackoverflow.com/questions/1284535/php-transliteration) – Quentin

+0

Non hai mostrare ciò che si è tentato :( – Evert

+0

caratteri Il termine corretto qui sarebbe accentati Caratteri speciali sono cose come $ # @/\ ecc. – lgaud

risposta

25

provare questo .. funziona per me.

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

Ho provato utf-8 invece di utf8 e ha funzionato! Grazie! – Mossawi

+3

utf8 e utf-8 non ha funzionato per me. I caratteri vengono sostituiti da un punto interrogativo, Questo è tutto – CREE7EN

+0

@ CREE7EN Prova a impostare prima la locale: 'setlocale (LC_CTYPE, 'en_US.UTF8');' Dopo che la codifica sembra essere migliore. – Neograph734

16

mi piace la risposta degli stewies, ma per completezza questo funziona per me.

preg_replace("/&([a-z])[a-z]+;/i", "$1", htmlentities($foo));