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