Foros del Web » Programando para Internet » PHP »

Ayudita con las expresiones regulares

Estas en el tema de Ayudita con las expresiones regulares en el foro de PHP en Foros del Web. Hola, tengo esta expresión regular: Código: <a.+?href\=(?<link>.+?)(?=[>\s]).*?>(?<lnkText>.+?)</a> Sacada de aquí: http://regexlib.com/REDetails.aspx?regexp_id=1701 y que es lo que quiero hacer. Lo que hace es que dado una ...
  #1 (permalink)  
Antiguo 17/05/2010, 08:33
 
Fecha de Ingreso: febrero-2008
Mensajes: 43
Antigüedad: 16 años, 2 meses
Puntos: 2
Ayudita con las expresiones regulares

Hola, tengo esta expresión regular:

Código:
<a.+?href\=(?<link>.+?)(?=[>\s]).*?>(?<lnkText>.+?)</a>
Sacada de aquí: http://regexlib.com/REDetails.aspx?regexp_id=1701

y que es lo que quiero hacer.

Lo que hace es que dado una etiqueta de enlace, como esta:

Código:
<a href=http://capturedLink target=blah>captured Text</a>|<a class="blah" href="http://capturedLink" target="blah">captured Text</a>
Extrae tanto la url del link como el texto que encierra las etiquetas.

El problema es que no funciona con php. Ahora uso esta otra expresión: '/([^>]*)\/?a>/'

Y funciona correctamente, pero tengo que volver a filtrar el texto varias veces para obtener el resultado adecuado.

Mi pregunta y lo que necesito saber, es, cómo separar el texto del enlace y la id, siendo el enlace exactamente así:

Código:
<a style="font-family: Verdana; font-size: 9pt;" href="/detalles.php/id.2440">
 Texto a capturar</a>
Un saludo y gracias a todos.
  #2 (permalink)  
Antiguo 17/05/2010, 08:55
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Ayudita con las expresiones regulares

intentalo asi ?

Código PHP:
Ver original
  1. preg_match('%<a.*?href=["\'](.*?)[\'"].*?>(.*?)</a>%s', $matches);
  2. print_r($matches[1]);
__________________
More about me...
~ @rhyudek1
~ Github
  #3 (permalink)  
Antiguo 17/05/2010, 09:06
 
Fecha de Ingreso: febrero-2008
Mensajes: 43
Antigüedad: 16 años, 2 meses
Puntos: 2
Respuesta: Ayudita con las expresiones regulares

Gracias por la respuesta pero eso me saca todos los enlaces del texto.

A mí lo que me gustaría sacar es solo el que tiene determinado id numérico, en este caso 2440, o en su defecto, todos los que tienen esa regla de estilo definida.

Un saludo.


Edit, no se como sería, pero creo que es una cosa así: '%<a.*?href=["\'](.*?)[\'"].*?(2440)>(.*?)</a>%s' Aunque ni idea, llevo dos días dándole vueltas a esto de las expresiones regulares y la verdad es que me está costando :P
  #4 (permalink)  
Antiguo 17/05/2010, 09:09
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Ayudita con las expresiones regulares

es lo mismo no?
Código PHP:
Ver original
  1. preg_match('%<a.*?href=["\'](.*?id\.2440.*?)[\'"].*?>(.*?)</a>%s', $matches);
  2. print_r($matches[1]);
__________________
More about me...
~ @rhyudek1
~ Github
  #5 (permalink)  
Antiguo 17/05/2010, 09:17
 
Fecha de Ingreso: febrero-2008
Mensajes: 43
Antigüedad: 16 años, 2 meses
Puntos: 2
Respuesta: Ayudita con las expresiones regulares

Esa expresión directamente no me pilla nada.

No tengo ni papa de esto, pero creo que la expresión regular que pusiste es para que venga algo tras el id del enlace, pero no viene nada, solo el cierre de la etiqueta. Un saludo y gracias.

Etiquetas: expresiones, regulares
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 05:40.