La función lo que hace es eliminar cualquier carácter extraño de la cadena de texto pasada, utilizando expresiones regulares, dejando solamente los caracteres de la a-z y modificando los espacios a "-" o "_".
La ejemplos de uso de la función url_title().
echo url_title('buen día'); //da como salida "buen-da" echo url_title("Vas para caracas?? o que?!!!?<{{}"); // da como resultado"Vas-para-carcas??-o-que?!!!?"
Como evitar que url_title() elimine los acentos
Ahora bien, para lograr esto lo primero que debemos hacer es crear nuestra propia version del URL helper, para esto en la carpeta application/helpers creamos un archivo llamado MY_url_helper.php, (OJO usamos MY_ si ese es el prefijo que tenemos establecido en nuestro archivo de configuración) y dentro del archivo colocamos lo siguiente:
function url_title($str, $separator = 'dash', $lowercase = FALSE) { $str=strtr($str,$array=array("À"=> "A","Á"=>"A","Â"=>"A","Ã"=>"A","Ä"=>"A","Å"=>"A","à"=>"a","á"=>"a","â"=>"a","ã"=>"a","ä"=>"a","å"=>"a","Ò"=>"O","Ó"=>"O","Ô"=>"O","Õ"=>"O","Ö"=>"O","Ø"=>"O","ò"=>"o","ó"=>"o","ô"=>"o","õ"=>"o","ö"=>"o","ø"=>"o","È"=>"E","É"=>"E","Ê"=>"E","Ë"=>"E","è"=>"e","é"=>"e","ê"=>"e","ë"=>"e","Ç"=>"C","ç"=>"c","Ì"=>"I","Í"=>"I","Î"=>"I","Ï"=>"I","ì"=>"i","í"=>"i","î"=>"i","ï"=>"i","Ù"=>"U","Ú"=>"U","Û"=>"U","Ü"=>"U","ù"=>"u","ú"=>"u","û"=>"u","ü"=>"u","ÿ"=>"y","Ñ"=>"N","ñ"=>"n")); if ($separator == 'dash') { $search = '_'; $replace = '-'; } else { $search = '-'; $replace = '_'; } $trans = array( '&\#\d+?;' => '', '&\S+?;' => '', '\s+' => $replace, '[^a-z0-9\-\._]' => '', $replace.'+' => $replace, $replace.'$' => $replace, '^'.$replace => $replace, '\.+$' => '' ); $str = strip_tags($str); foreach ($trans as $key => $val) { $str = preg_replace("#".$key."#i", $val, $str); } if ($lowercase === TRUE) { $str = strtolower($str); } return trim(stripslashes($str)); }
Cave destacar que esta función es la misma de codeigniter lo único es que le e agregado una linea para que también reemplace los caracteres que tienen acentos por los normales.
Tambien si quieres pueden agregar esta funcion: que elimina los "-" y los "_" de la caeena que se el pase, más o menos trabaja a la inversa de url_title().
function inv_url_title($str,$lowercase = FALSE) { $str = preg_replace("#[_-]+#i", ' ', $str); if ($lowercase === TRUE) { $str = strtolower($str); } return $str; }
Hola sabes al moment de imprimir mi url_title no modifica la url solo la imprime en la vista tú sabes por que?
ResponderEliminarla verdad es que no, has modificado la funcion como hice yo en el tutorial o es la basica de codeigniter?
Eliminar