Crear un slug o una url amigable en codeigniter con php
En ocasiones nos interesa convertir a amigable un determinado texto, nombre de empresa, título de una publicación, etc.
Para ello utilizamos la siguiente función, la cual recibe como parámetro el texto que queremos convertir en amigable y nos lo devuelve separado por guiones:
Ejemplo antes : Muebles y Decoración Santos
Después de utilizar la función: muebles-y-decoracion-santos
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
/** * Reemplaza todos los acentos por sus equivalentes sin ellos * * @param $string * string la cadena a sanear * * @return $string * string saneada */ private function scanear_string($string){ $string = trim($string); $string = str_replace( array('á', 'à', 'ä', 'â', 'ª', 'Á', 'À', 'Â', 'Ä'), array('a', 'a', 'a', 'a', 'a', 'A', 'A', 'A', 'A'), $string ); $string = str_replace( array('é', 'è', 'ë', 'ê', 'É', 'È', 'Ê', 'Ë'), array('e', 'e', 'e', 'e', 'E', 'E', 'E', 'E'), $string ); $string = str_replace( array('í', 'ì', 'ï', 'î', 'Í', 'Ì', 'Ï', 'Î'), array('i', 'i', 'i', 'i', 'I', 'I', 'I', 'I'), $string ); $string = str_replace( array('ó', 'ò', 'ö', 'ô', 'Ó', 'Ò', 'Ö', 'Ô'), array('o', 'o', 'o', 'o', 'O', 'O', 'O', 'O'), $string ); $string = str_replace( array('ú', 'ù', 'ü', 'û', 'Ú', 'Ù', 'Û', 'Ü'), array('u', 'u', 'u', 'u', 'U', 'U', 'U', 'U'), $string ); $string = str_replace( array('ñ', 'Ñ', 'ç', 'Ç'), array('n', 'N', 'c', 'C',), $string ); //Esta parte se encarga de eliminar cualquier caracter extraño $string = str_replace( array("\\", "¨", "º", "-", "~", "#", "@", "|", "!", "\"", "·", "$", "%", "&", "/", "(", ")", "?", "'", "¡", "¿", "[", "^", "]", "+", "}", "{", "¨", "´", ">", "< ", ";", ",", ":", "."), '', $string ); //Esta parte se encarga de sustituir los espacios en blanco por guiones $string = str_replace(array(" "),'-',$string); $string=strtolower($string); return $string; } |
Para llamar a dicha función, desde nuestro controlador haríamos así:
1 2 |
$nombre_comercial_cliente="Muebles y Decoración Santos"; $nombre_comercial_cliente_mod=$this->scanear_string($nombre_comercial_cliente)); |