Hola a todos!
Tengo el siguiente problema:
Recibo una variable de un campo de texto de un formulario, y quiero antes de meterlo en base de datos quitarle las tildes, es decir en vez de meter "í" pues grabar "i".
Al principio lo que quería era al contrario, leer de base de datos y quitarle las tildes a lo que leía, pero no me dejaba e imaginé que era algún problema con la base de datos, por eso ahora lo que quiero es quitarlas antes de meterla en base de datos.
He probado las siguientes funciones:
Código PHP:
function urls_amigables($cadena) {
$cadena = trim($cadena);
$cadena = strtr($cadena,
"ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ",
"aaaaaaaaaaaaooooooooooooeeeeeeeecciiiiiiiiuuuuuuuuynn");
$cadena = strtr($cadena,"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz");
$cadena = preg_replace('#([^.a-z0-9]+)#i', '-', $cadena);
$cadena = preg_replace('#-{2,}#','-',$cadena);
$cadena = preg_replace('#-$#','',$cadena);
$cadena = preg_replace('#^-#','',$cadena);
return $cadena;
}
Código PHP:
<?php
function urls_amigables($url) {
// Tranformamos todo a minusculas
$url = strtolower($url);
//Rememplazamos caracteres especiales latinos
$url = str_replace ("á", "a", $url);
$url = str_replace ("é", "e", $url);
$url = str_replace ("í", "i", $url);
$url = str_replace ("ó", "o", $url);
$url = str_replace ("ú", "u", $url);
$url = str_replace ("ñ", "u", $url);
// Añaadimos los guiones
$find = array(' ', '&', '\r\n', '\n', '+');
$url2 = str_replace ($find, '-', $url);
// Eliminamos y Reemplazamos demás caracteres especiales
$find = array('/[^a-z0-9\-<>]/', '/[\-]+/', '/<[^>]*>/');
$repl = array('', '-', '');
$url3 = preg_replace ($find, $repl, $url2);
return $url3;
}
?>
Pero no me funcionan, la primera lo que hace es cambiarme las tildes y ñ por "-", y la segunda lo que hace es eliminarme directamente la letra que lleve tilde o que sea ñ.
¿Alguien sabe por qué me pasa esto?¿Cómo puedo solucionarlo?
Un saludo y gracias