simbolo_euro_php

Buscar y reemplazar una cadena por otra en PHP es algo trivial utilizando la función str_replace. Trivial hasta que te topas con el símbolo del EURO € y la torre de Babel de las codificaciones. En este mini-post os dejo cómo he conseguido hacerlo después de mucho investigar.

Si has llegado hasta aquí es porque te estás volviendo loco/a intentando que PHP reconozca el símbolo del EURO para, por ejemplo, sustituirlo por otra cadena o simplemente eliminarlo de un precio: has probado con str_replace, con preg_replace, has utilizado una y otra vez utf8_encode (y utf8_decode por si acaso también) pero no hay forma de dar con él.

Después de leer muchos foros con respuestas inútiles, este comentario en la página del manual de la función utf8_decode me puso sobre la pista. Como he dicho, este será un mini artículo, así que tampoco relataré mis experimentos, iré al grano. Esto es lo que finalmente me ha funcionado a mí.

$texto=utf8_encode($texto);
$texto=str_replace(array("€","€",chr(128)),"EUR",iconv("UTF-8", "iso-8859-1//TRANSLIT", $texto));

Dependiendo de la codificación en la que os llegue la cadena $texto es posible que os podáis saltar el primer paso de convertirlo a UTF-8. La magia reside en la función iconv y el parámetro TRANSLIT. Podéis ver más sobre esta función y un ejemplo precisamente con el símbolo de € aquí.

Espero que os haya sido útil y si encontráis alguna manera más simple de hacerlo, como siempre, compartidlo en los comentarios.