2012-03-15 36 views
8

Estoy tratando de convertir caracteres como:Cómo convertir caracteres especiales a caracteres normales?

ë, ä, ï, ö, etc. 

Para caracteres normales como:

e, a, i, o, etc. 

¿Cuál es la mejor manera de hacer esto? He intentado muchas cosas, como preg_replace y str_replace.

¿Alguien me puede ayudar?

- EDITAR -

Lo que intenté, fue:

$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

posible duplicado de [Transcripción PHP] (http://stackoverflow.com/questions/1284535/php-transliteration) – Quentin

+0

Usted no mostró lo que ha intentado :( – Evert

+0

caracteres El término correcto en este caso sería acentuados Los caracteres especiales son cosas como $ # @/\ etc. – lgaud

Respuesta

25

probar esto .. funciona para mí.

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

Probé utf-8 en lugar de utf8, y funcionó! Gracias! – Mossawi

+3

utf8 y utf-8 no funcionó para mí. Los caracteres se reemplazan por un signo de interrogación, eso es todo. – CREE7EN

+0

@ CREE7EN Intenta establecer primero la configuración regional: 'setlocale (LC_CTYPE, 'en_US.UTF8');' Después de que la codificación parece ser mejor. – Neograph734

16

me gusta la respuesta de stewies, pero para completar esto, esto funciona para mí.

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