Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/04/2010, 10:28
Avatar de mayid
mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 7 meses
Puntos: 101
Encontrar html con expresiones regulares

Necesito encontrar todos los links que incluyan <h2> o <h3> dentro.

Tengo esto, que funciona casi perfectamente. Digo casi, porque hay tres link sin subtitulos que se filtran:

$patron = '/<a(.*)><h[32]>(.*)<\/h[32]>.*<\/a>/isU';

Lo que esta pasando con ese filtro es que se seleccionan, aunque no siempre, estas estructuras:

Cita:
<a href="http://www.artofillusion.org">www.artofillusion.org</a><br><a href="textures.html"><strong><h2>5.1 Textures</h2></strong></a>
Es decir, la primera etiqueta siente que tiene que encontrar un sibtitulo sí o sí, y se come a la segunda etiqueta (hace lo que marco en rojo).

Esto no debería pasar, porque tengo el modificador /U (de codicia). Sin embargo, sucede con solo 3 o 4 links de los 40 que tengo!. Y no veo por qué.

Me parece que el problema esta en el primer selector:

<a(.*)>

Lo que necesito es negar que dentro de (.*) exista la cadena </a>

Y ya he intentado mil cosas, pero no funcionan: <a([^>]?)>