Cómo quitar/eliminar caracteres especiales en PHP

Limpia tus cadenas de texto con la función preg_replace y una sencilla expresión regular, te evitará dolores de cabeza en el futuro. .........
Publicado
Actualizado
Engagements 0 Comentario

Para limpiar un texto y remover los caracteres especiales podemos usar una expresión regular para dicha tarea usando la función preg_replace, y lo logramos con el siguiente código:

<?php
        $texto = "Hola!+Mi'Nombre €Es&Ju%an";
        $texto = preg_replace('([^A-Za-z0-9])', '', $texto);	     					
        echo $texto;
        // Salida: HolaMiNombreEsJuan
        ?>

Como vemos se han limpiado los caracteres especiales pero hemos perdido los espacios entre las palabras, si queremos conservar estos espacios podemos hacerlo de la siguiente manera

<?php
        $texto = "Hola!+MiNombre €Es&Ju%an";
        $texto = preg_replace('([^A-Za-z0-9 ])', '', $texto);
        echo $texto;
        // Salida: HolaMiNombre EsJuan
        ?>

Como podemos observar ya no se perdieron esos espacios en blanco, pero si queremos también reemplazar los caracteres especiales por espacios en blanco podemos usar el siguiente código:

<?php
        $texto = "Hola!+Mi'Nombre €Es&Ju%an";
        $texto = preg_replace('([^A-Za-z0-9 ])', ' ', $texto);
        echo $texto;
        // Salida: Hola  Mi Nombre    Es Ju an
        ?>

Si deseamos mantener un carácter especial podemos agregarlo a nuestra expresión regular, ejemplo:

<?php
        $texto = "Hola!+Mi'Nombre €Es&Ju%an";
        $texto = preg_replace('([^A-Za-z0-9 !])', '', $texto);
        echo $texto;
        // Salida:Hola!MiNombre EsJuan
        ?>

Para más información puedes consultar la documentación oficial de la función preg_replace en http://php.net/manual/es/function.preg-replace.php

Comentarios