Bienvenido a datoweb.com!! En este foro podrás encontrar ayuda sobre diseño y desarrollo web en general. Si quieres formar parte de esta comunidad para pedir ayuda o colaborar ayudando a otros usuarios del foro solo tienes que registrarte desde el siguiente enlace: Registrarse en el Foro

Conflicto con las tildes y acentos para las urls

¡¡Ya me he animado!!

Sé que es una tonteria que carece de importancia, pero me da rabia porque me salen los caracteres que representan a los acentos en las url amigables. Juro que lo he hecho como explicas, pero no hay forma. Para que te hagas una idea, lo tengo configurado así:
/**Quitar tildes y acentos para las urls */
function limpia_espacios($cadena){
$cadena = str_replace(' ', '-', $cadena);
$cadena = str_replace('?', '', $cadena);
$cadena = str_replace('+', '', $cadena);
$cadena = str_replace('??', '', $cadena);
$cadena = str_replace('´', '', $cadena);
$cadena = str_replace('!', '', $cadena);
$cadena = str_replace('ñ', 'n', $cadena);
$aleatorio = date ("s");
$cadena = str_replace('¿', '', $cadena);
$originales = 'ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûýýþÿŔŕñ';
$modificadas = 'aaaaaaaceeeeiiiidnoooooouuuuybsaaaaaaaceeeeiiiidnoooooouuuyybyRrn';
$cadena = strtr($cadena, utf8_decode($originales), $modificadas);
$cadena = strtolower($cadena);

return utf8_encode($aleatorio."/".$cadena);

}

El caso es que le añadí la "ñ", porque tu función no la incluía, y me la sustituye por la "n" sin problemas. No obstante, los acentos se resisten. No sé si tiene algo que ver, pero lo expongo por si acaso. En mi proyecto tengo todas las páginas con charset="utf-8 en lugar del iso-8859-1. La razón es que no me ha dado ningún problema y por eso lo dejo.

Espero respuesta... tic...tac... jajajaja, es broma. Cuando puedas.

Saludos

Edito para decir que tanbien he probado con el acento hacia el otro lado. Parece que es apolítico porque no es ni de derechas ni de izquierdas.
0
Puntos
14102
Visitas
4
Resp
Por LuzEsmeralda hace 127 meses
Principiante
Respuesta #1
vamos a ello jeje lo primero en la cadena originales ya esta la ñ que se cambia por una n:

$originales = 'ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûýýþÿŔŕñ';
$modificadas = 'aaaaaaaceeeeiiiidnoooooouuuuybsaaaaaaaceeeeiiiidnoooooouuuyybyRrn';
la ñ es la que esta en negrita xd,

por otra parte en las url tienen que salir sin acentos si o si hazme un favor pasa tu código php de tu pagina agregar.php para ver que le estas enviando a la base de datos

0
Puntos
Por zeuskx hace 127 meses
Administrador Sitio web
Respuesta #2
Siento decirte que, según lo que has puesto, no me cambia las eñes. Tal y como lo he puesto yo, sí. Este es mi código. En mi proyecto "agregar post" se llama "enviar relato" (por razones obvias):
<?php require_once('Connections/conexion.php');
include("includes/proteger.php");

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {

$relatosinimagenes= $_POST['relato'];
$relatosinimagenes=preg_replace("/<img (.+?)>/", ' ', $relatosinimagenes);
$insertSQL = sprintf("INSERT INTO relatos (titulo, resumen, categoria, relato, seo, keywords, autor, fecha) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)",
GetSQLValueString($_POST['titulo'], "text"),
GetSQLValueString($_POST['resumen'], "text"),
GetSQLValueString($_POST['categoria'], "int"),
GetSQLValueString($relatosinimagenes, "text"),
GetSQLValueString(limpia_espacios($_POST['titulo']), "text"),
GetSQLValueString(keywords_auto($_POST['titulo']), "text"),
GetSQLValueString($_POST['autor'], "int"),
GetSQLValueString($_POST['fecha'], "text"));

mysql_select_db($database_conexion, $conexion);
$Result1 = mysql_query($insertSQL, $conexion) or die(mysql_error());

$insertGoTo = "users/relato_enviado.php";
if (isset($_SERVER['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
$insertGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $insertGoTo));
}
?>
0
Puntos
Por LuzEsmeralda hace 127 meses
Principiante
Respuesta #3
que raro a todos nos funciona bien esa función menos a ti puede que sea un caso paranormal O_O. eh revisado tu código php y esta bien en principio envía bien los datos puedes probar quitando la función utf8_decode ya que tus paginas ya estan en utf8 y puede que hay este el error, por probar no pierdes nada:
/**Quitar tildes y acentos para las urls */
function limpia_espacios($cadena){
$cadena = str_replace(' ', '-', $cadena);
$cadena = str_replace('?', '', $cadena);
$cadena = str_replace('+', '', $cadena);
$cadena = str_replace('??', '', $cadena);
$cadena = str_replace('´', '', $cadena);
$cadena = str_replace('!', '', $cadena);
$cadena = str_replace('ñ', 'n', $cadena);
$aleatorio = date ("s");
$cadena = str_replace('¿', '', $cadena);
$originales = 'ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûýýþÿŔŕñ';
$modificadas = 'aaaaaaaceeeeiiiidnoooooouuuuybsaaaaaaaceeeeiiiidnoooooouuuyybyRrn';
$cadena = strtr($cadena, $originales, $modificadas);
$cadena = strtolower($cadena);

return ($aleatorio."/".$cadena);

}
0
Puntos
Por zeuskx hace 127 meses
Administrador Sitio web
Respuesta #4
Si tenemos en cuenta que para mi proyecto hago cambios puntuales para adaptarlo a lo que pretendo, es lógico que mis configuraciones difieran en algo de las de los demás. El caso es que me funciona (aunque tengo que aportar un extra de atencón para no perderme). El tema que nos ocupa es (lo dije al abrir el post) para mí intranscendente: ¡qué me importa si se ve bien en la url o no; lo importante es que funcione. Por ejemplo, en mozilla y chrome me saca el numero del redodID y la url amigable, en IE explorer no me saca el recordID y en opera ni lo uno ni lo otro. El tema es que en todos los navegadores me funciona (independientemente de lo que muestre en la url) y tambien en los dispositivos móviles. Y si copio y pego de un navegador a otro tambien funciona.

Si plantee la cuestión fue por mera cabezonería, porque me daba rabia. Pasado el impulso inicial... me importa un bledo. Tus explicaciones son buenas y eso es lo que cuenta. Aunque tengo los navegadores con las configuraciones por defecto, es muy posible que dependiendo del sistema operativo o cualquier otro tipo de software cambien determinadas cosas. Incluso puede que tenga instalados widgets, de esos que se te instalan sin preguntar, e interfieran en algo.

No demos mas vueltas al tema: me funciona y es lo que cuenta.

Gracias por tu colaboración y te mando un beso.
0
Puntos
Por LuzEsmeralda hace 127 meses
Principiante
Compartir en facebook
Compartir en twitter
Compartir
Para comentar Inicia sesión o Registrate