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([^>]?)>