Foros del Web » Programando para Internet » PHP »

Expresion regular para aislar parte de una url

Estas en el tema de Expresion regular para aislar parte de una url en el foro de PHP en Foros del Web. Hola, haber si me podeis ayudar a confeccionar una expresión regular para aislar parte de una url. dada una url tal como: http://www.dominio.com/muestra-de-url-56 aislar: ( ...
  #1 (permalink)  
Antiguo 19/02/2014, 02:57
 
Fecha de Ingreso: noviembre-2012
Mensajes: 76
Antigüedad: 11 años, 4 meses
Puntos: 3
Exclamación Expresion regular para aislar parte de una url

Hola,
haber si me podeis ayudar a confeccionar una expresión regular para aislar parte de una url.

dada una url tal como:
http://www.dominio.com/muestra-de-url-56

aislar: (muestra-de-url)

el problema me viene porque a veces la url puede ser también así:
http://www.dominio.com/8-pares-de-za...l-numero-45-78

donde me interesaría aislar:
8-pares-de-zapatillas-del numero-45

ya que lo que viene después del último guion es siempre el id

Gracias por adelantado!
  #2 (permalink)  
Antiguo 19/02/2014, 03:10
lolainas
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Expresion regular para aislar parte de una url

La URL siempre acaba en "guión+numero"? Osea, siempre hay que quitar el contenido delante del último guión?

Enséñame cómo has hecho hasta el momento.
  #3 (permalink)  
Antiguo 19/02/2014, 03:14
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Expresion regular para aislar parte de una url

Separa los elementos con explode() y obtén el último (ID) con end(), si tienes dudas, consulta el manual para cada función.
__________________
- León, Guanajuato
- GV-Foto
  #4 (permalink)  
Antiguo 19/02/2014, 03:29
 
Fecha de Ingreso: noviembre-2012
Mensajes: 76
Antigüedad: 11 años, 4 meses
Puntos: 3
Respuesta: Expresion regular para aislar parte de una url

Hasta ahora había usado:
Código PHP:
$titulo explode("/","$urlDominio"); 
para quedarme con la ultima parte que es la que me interesa:
Código PHP:
$titulo[3
Una vez obtenido eso, lo que he hecho es:
Código PHP:
preg_match_all("/(.*)-/i"$titulo[3], $aisladoSinId); 
Lo que da como resultado, lo que buscaba:
muestra-de-url
o
8-pares-de-zapatillas-del numero-45

Gracias a los dos por contestar. Creo que ya esta bién así, sino corregirme.

Triby dijo:
Cita:
Separa los elementos con explode() y obtén el último (ID) con end(), si tienes dudas, consulta el manual para cada función.
No buscaba aislar el ID, sino justo lo contrario, lo que no fuera el ID.
Gracias igualmente!
  #5 (permalink)  
Antiguo 19/02/2014, 07:17
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Expresion regular para aislar parte de una url

Cita:
Iniciado por cybervandal Ver Mensaje
[...] No buscaba aislar el ID, sino justo lo contrario, lo que no fuera el ID.
Pues tienes que pensar un poco más.

Es decir, la expresión regular está de sobra, no hace falta.

Si lo piensas un poco con explode() conviertes la cadena en un array, si tienes esto: 8-pares-de-zapatillas-del numero-45-78

Código PHP:
Ver original
  1. $str = '8-pares-de-zapatillas-del numero-45-78';
  2. $parts = explode('-', $str); // separamos por guiones
  3. array_pop($parts); // eliminamos el ultimo elemento
  4. $str = join('-', $parts); // unimos de nuevo
  5.  
  6. echo $str; //  8-pares-de-zapatillas-del numero-45

La regla de oro de usar RegExp (expresiones regulares) es: no las uses si el mismo problema se puede resolver sin RegExp.

Además usar RegExp de manera prematura es síntoma de que no has pensado bien en el problema y buscas una solución rápida, mal ahí.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: expresion, parte, regular, 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 20:42.