Hola people,
Nada, seguro que es una chorrada, pero no encuentro la solución, tengo ésta función para hacer URLs amigables:
Código PHP:
function url_amigables($url){
$search = array('<', '>', '"', '&');
$url = str_replace($search, '', $url);
$search = array('á','Á','é','É','í','Í','ó','Ó','ú','Ú','ñ','Ñ');
$replace = array('a','a','e','e','i','i','o','o','u','u','n','n');
$search = array('Á', 'É', 'Í', 'Ó', 'Ú', 'á', 'é', 'è', 'í', 'ó', 'ú', 'Ü', 'ü', 'Ñ', 'ñ', '_', '-', 'ç', 'à');
$replace = array('a', 'e', 'i', 'o', 'u', 'a', 'e', 'e', 'i', 'o', 'u', 'u', 'u', 'n', 'n', ' ', ' ', 'c', 'a');
$url = str_replace($search, $replace, $url);
$url = preg_replace('/&(?!#[0-9]+;)/s', '', $url);
$search = array(' a ', ' ante ', ' de ', ' para ', ' con ', ' contra ', ' por ', ' entre ', ' en ', ' sobre ', ' bajo ', ' y ', ' e ', ' o ', ' u ', ' este ', 'aquel ', ' la ', ' el ', ' lo ', ' las ', ' los ', 'els', 'd’','l’','s’');
$url = str_replace($search, ' ', strtolower($url));
$url = str_replace($search, $replace, strtolower(trim($url)));
$url = preg_replace("/[^a-zA-Z0-9\s]/", '', $url);
$url = preg_replace('/\s\s+/', ' ', $url);
$url = str_replace(' ', '-', $url);
return $url;
}
Y la cargo en una libreria externa con include(), donde tengo todos los códigos y funciones para el sitio web.
Lo curioso es que la función sí que funciona, pero no me devuelve bien los acentos:
Por ejemplo: De "Castilla y León" me devuelve "castilla-len".
En cambio si pongo la función entre <head> y </head> en la misma página PHP, sin ser cargada con un include, funciona perfectamente, es decir, me devuelve "castilla-leon".
Alguien sabe que tengo que hacer? o que demonios pasa?
Gracias de antemano y un saludo!