Foros del Web » Programando para Internet » PHP »

Quitar caracter "+" en una url

Estas en el tema de Quitar caracter "+" en una url en el foro de PHP en Foros del Web. LEER EL ULTIMO POST QUE DEJÉ ACA ABAJO.... AHI ESTÁ EL PROBLEMA QUE SURGIÓ AHORA. GRACIAS....
  #1 (permalink)  
Antiguo 04/02/2007, 15:46
Avatar de NacHox  
Fecha de Ingreso: enero-2005
Mensajes: 25
Antigüedad: 19 años, 3 meses
Puntos: 1
Exclamación Quitar caracter "+" en una url

LEER EL ULTIMO POST QUE DEJÉ ACA ABAJO.... AHI ESTÁ EL PROBLEMA QUE SURGIÓ AHORA.

GRACIAS.

Última edición por NacHox; 07/02/2007 a las 13:57
  #2 (permalink)  
Antiguo 04/02/2007, 16:50
Avatar de jmn2k1  
Fecha de Ingreso: noviembre-2001
Ubicación: Buenos Aires...
Mensajes: 489
Antigüedad: 22 años, 5 meses
Puntos: 2
Re: Quitar caracter "+" en una url [urgente]

Cita:
Para quitar los acentos uso esta funcion (pero no se si sirva para quitar el caracter "+"):
Y lo probaste? porque en la documentación de la función no dice nada acerca de que caracteres puedes usar...
__________________
JmN
  #3 (permalink)  
Antiguo 04/02/2007, 16:54
 
Fecha de Ingreso: noviembre-2003
Mensajes: 78
Antigüedad: 20 años, 4 meses
Puntos: 2
Re: Quitar caracter "+" en una url [urgente]

NachoX,

Esto es algo que podés corregir rápidamente modificando la línea del mod_rewrite:

Actualmente tenés:
RewriteRule ^descargar-([-&!&_a-zA-Z0-9]*).html index.php?seccion=pver&nombre=$1

Este fragmento: [-&!&_a-zA-Z0-9]* es una expresión regular (http://en.wikipedia.org/wiki/Regular_expression) que define que caracteres son aceptados para coincidir en la búsqueda.

Para aceptar el caracter '+' deberías agregarlo allí, reemplazando:
[-&!&_a-zA-Z0-9]*
por
[-&!&_a-zA-Z0-9+]*

O si directamente no te interesa qué caracteres pueden llegar y querés que cualquier URL de la forma descarar-... sea aceptada:

RewriteRule ^descargar-(.*).html index.php?seccion=pver&nombre=$1

Espero te sea de utilidad.

Saludos!
__________________
Joel A. Chornik
ELSERVER.COM - WebHosting Profesional
  #4 (permalink)  
Antiguo 04/02/2007, 18:45
Avatar de oso96_2000  
Fecha de Ingreso: junio-2002
Ubicación: Distrito Federal
Mensajes: 558
Antigüedad: 21 años, 9 meses
Puntos: 35
Re: Quitar caracter "+" en una url [urgente]

[-&!&_a-zA-Z0-9+]*

No estoy muys eguro, pero en todo caso no habria que escapar ese +?

[-&!&_a-zA-Z0-9\\+]*

O algo asi xD..

Ya si lo que quieres es quitar el caracter de la url, modifcando tu funcion que ya tienes un poco..

Código PHP:
function elimina_acentos($cadena){
$tofind "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ";
$replac "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn";
$cadena strtr($cadena,$tofind,$replac);
return 
str_replace("+","",$cadena);

__________________
Sin Ideas
  #5 (permalink)  
Antiguo 07/02/2007, 13:55
Avatar de NacHox  
Fecha de Ingreso: enero-2005
Mensajes: 25
Antigüedad: 19 años, 3 meses
Puntos: 1
Re: Quitar caracter "+" en una url

Gracias por las respuestas, pero ahora me he fijado que el problema es otro.

En cada página y por seguridad obligatoria del servidor, tengo que usar la variable $GET['nombre']; que es la que obtiene el nombre de un programa, para asi poder mostrar el registro ligado a ese nombre de programa, me explico:

Tu haces click en: descargar-programa_para_c++.html

entonces la pagina que lee eso para mostrar ese programa dice:

Código:
$nombre = $_GET['nombre'];
$nombre = str_replace(" ","_",$nombre);
$sql=mysql_query("SELECT * FROM programas WHERE nombre='$nombre'");
while($row=mysql_fetch_array($sql)){
Entonces cuando un caracter del tipo "+" pasa por la url interna, lo limpia el $GET['nombre']; y finalmente la pagina no lee ese registro y por ende no muestra nada..... porque si $GET lo limpia, en vez de leer internamente (y mostrar ese registro):

descargar-programa_para_c++.html

Va a leer: descargar-programa_para_c.html

Y por ende la pagina saldrá en blanco, pues ese registro no existiría con ese nombre.

Esa es mi duda ahora.... QUE PUEDO HACER???


De antemano Gracias a los que responda, y MIL GRACIAS a los que ya han respondido lo anterior.


Saludos!
  #6 (permalink)  
Antiguo 07/02/2007, 14:42
Avatar de jmn2k1  
Fecha de Ingreso: noviembre-2001
Ubicación: Buenos Aires...
Mensajes: 489
Antigüedad: 22 años, 5 meses
Puntos: 2
Re: Quitar caracter "+" en una url

EL problema no lo genera el $_GET si tuvieras registers globals en off y pudieras acceder a la variable $nombre directamente tambien no estarian los caracteres que usa la url.

Te diria que saques los caracteres que molesten del nombre, y si eso los cambia mucho el nombre, podes hacer otro campo en la tabla y guardarlo ahi para filtrar por ese campo en vez de por nombre...

Otra solucion que podes probar es en cada lugar que enlaces al programa mostrar el nombre con urlencode() con eso vas a poder "escapar" los caracteres como + y despues usar el nombre original (usando urldecode()). La desventaja de esto es que el nombre del archivo quedaria algo asi como programa-para_c%23%23.html lo que es un poco molesto.

PD.: No elimines los mensajes que hallas escrito hasta ahora, le pueden servir a alguien mas...
__________________
JmN
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 06:36.