Limpiar string de caracteres no deseados en PHP
En algunos casos necesitamos limpiar caracteres indeseados en una cadena de caracteres. Es muy útil si queremos por ejemplo limpiar el título de un articulo para luego generar URLs amigables, entre otras cosas.
En el ejemplo que les mostraré a continuación vamos a hacer lo siguiente:
1) reemplazamos las letras acentuadas por las que están sin acentuar utilizando arrays y la función str_replace.
2) Convertimos toda la cadena a letras minúsculas con la función strtolower.
2) Finalmente buscamos los caracteres no deseados y los reemplazamos por “” (vacio). La expresión regular ‘[^A-Za-z0-9_-]‘ significa que se buscarán los caracteres que NO son: de la A a la Z, de la a a la z, del 0 al 9 y guiones.
utf8_encode($titulo);
$a = array(‘á’,'é’,'í’,'ó’,'ú’,'à’,'è’,'ì’,'ò’,'ù’,'ä’,'ë’,'ï’,'ö’,'ü’,'â’,'ê’,'î’,'ô’,'û’,'ñ’,'ç’,’ ‘);
$b = array(‘a’,'e’,'i’,'o’,'u’,'a’,'e’,'i’,'o’,'u’,'a’,'e’,'i’,'o’,'u’,'a’,'e’,'i’,'o’,'u’,'n’,'c’,'-’);
$titulo = str_replace($a, $b, $titulo);
$titulo = strtolower($titulo);
$titulo = ereg_replace(‘[^A-Za-z0-9_-]‘, ”, $titulo);