Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Problema signo interrogación en la URL

Estas en el tema de Problema signo interrogación en la URL en el foro de PHP en Foros del Web. Estoy usando .htaccess para usar URLs amigables convirtiendo por ejemplo web.com/post?id=20 en web.com/titulo-del-post-id20 . Esto lo hice con la función de php str_replace y funciona ...
  #1 (permalink)  
Antiguo 23/10/2014, 18:01
 
Fecha de Ingreso: noviembre-2011
Mensajes: 20
Antigüedad: 8 años, 5 meses
Puntos: 0
Busqueda Problema signo interrogación en la URL

Estoy usando .htaccess para usar URLs amigables convirtiendo por ejemplo web.com/post?id=20 en web.com/titulo-del-post-id20. Esto lo hice con la función de php str_replace y funciona perfectamente.

El problema aparece cuando creo un post que en su título contiene un signo de interrogación. Por ejemplo un post de título ¿Sabías que...? se convertiría en web.com/¿Sabías-que...?-id20 y en lugar de enviarme al post, me manda un error 404.

Supongo que esto ocurre porque toma el ? como inicio de parámetros por GET...¿No?

¿Cómo podría solucionarlo?

Gracias de antemano.
  #2 (permalink)  
Antiguo 23/10/2014, 18:11
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 12 años
Puntos: 2534
Respuesta: Problema signo interrogación en la URL

Cita:
¿Cómo podría solucionarlo?
Fácil: tu función que convierte el título debería eliminar todos estos caracteres por consistencia.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 23/10/2014, 21:21
 
Fecha de Ingreso: noviembre-2011
Mensajes: 20
Antigüedad: 8 años, 5 meses
Puntos: 0
Respuesta: Problema signo interrogación en la URL

Cita:
Iniciado por pateketrueke Ver Mensaje
Fácil: tu función que convierte el título debería eliminar todos estos caracteres por consistencia.
Gracias, me imaginé eso mismo, eliminar los caracteres conflictivos. Ahora me di cuenta que también los dos puntos (:) provocan problemas. Supongo que entonces debo hacer que la URL solo muestre caracteres alfanuméricos...no? La función la uso de esta manera:
Código:
$url=str_replace(" ","-",$reg['post_titulo']);
El tercer parámetro contiene el texto al cual se le reemplazarán los espacios por guiones...pero...
¿Cómo lo hago para eliminar esos caracteres problemáticos o permitir solo alfanuméricos?

Muchas gracias.
  #4 (permalink)  
Antiguo 24/10/2014, 10:58
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 12 años
Puntos: 2534
Respuesta: Problema signo interrogación en la URL

Cita:
¿Cómo lo hago para eliminar esos caracteres problemáticos o permitir solo alfanuméricos?
En ese caso lo mejor sería usar una expresión regular:

Código PHP:
Ver original
  1. $text = '¿Cómo podría solucionarlo? ';
  2.  
  3. var_dump(preg_replace('/\W+/', '-', $text));

La idea es así, igual te sugiero investigar acerca del término friendly-urls o slugs, pues deben existir librerías para eso.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 24/10/2014, 11:03
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 11 años, 5 meses
Puntos: 175
Respuesta: Problema signo interrogación en la URL

Podrías hacer algo más casero.. los caracteres especiales "raros" los reemplazas por un GUIÓN BAJO o algun caracter válido para ULR, por ejemplo

Código PHP:
//FUNCION PARA ELIMINAR PUNTOS, COMAS, GUIONES, Y LO QUE SE TE OCURRA
function eliminar_caracteres($texto1) {

//Rememplazamos caracteres especiales latinos minusculas
$find = array(',''.''-''('')',' ');
$repl = array('_''_''_''_''_''_''_');
$texto1 str_replace ($find$repl$texto1);
return 
$texto1;


__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #6 (permalink)  
Antiguo 24/10/2014, 13:46
 
Fecha de Ingreso: noviembre-2011
Mensajes: 20
Antigüedad: 8 años, 5 meses
Puntos: 0
De acuerdo Respuesta: Problema signo interrogación en la URL

Cita:
Iniciado por loncho_rojas Ver Mensaje
Podrías hacer algo más casero.. los caracteres especiales "raros" los reemplazas por un GUIÓN BAJO o algun caracter válido para ULR, por ejemplo

Código PHP:
//FUNCION PARA ELIMINAR PUNTOS, COMAS, GUIONES, Y LO QUE SE TE OCURRA
function eliminar_caracteres($texto1) {

//Rememplazamos caracteres especiales latinos minusculas
$find = array(',''.''-''('')',' ');
$repl = array('_''_''_''_''_''_''_');
$texto1 str_replace ($find$repl$texto1);
return 
$texto1;


Genial! Funcionó perfecto este método, muchas gracias :)
  #7 (permalink)  
Antiguo 24/10/2014, 14:03
 
Fecha de Ingreso: noviembre-2011
Mensajes: 20
Antigüedad: 8 años, 5 meses
Puntos: 0
Respuesta: Problema signo interrogación en la URL

Cita:
Iniciado por pateketrueke Ver Mensaje
En ese caso lo mejor sería usar una expresión regular:

Código PHP:
Ver original
  1. $text = '¿Cómo podría solucionarlo? ';
  2.  
  3. var_dump(preg_replace('/\W+/', '-', $text));

La idea es así, igual te sugiero investigar acerca del término friendly-urls o slugs, pues deben existir librerías para eso.
Y esta forma también funcionó! gracias a los 2 :)

Etiquetas: 404, amigables, htaccess, url
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:40.