He estudiado detenidamente el manual de php (http://www.php.net/manual/es/regexp.introduction.php) pero no consigo averiguar lo que necesito.
Necesito extraer cualquier texto de un HTML que esté dentro de un enlace (<a></a>) y el cual contenga una determinada clase (class="clase").
Ejemplo de un HTML:
Código PHP :
$html = ' algún texto html <a atributos class="clase1" atributos>CAPTURAR ESTO</a> algún texto html <a atributos class="clase2" atributos>NO CAPTURAR ESTO</a> algún texto html <a atributos class="clase1" atributos>CAPTURAR ESTO</a> algún texto html';
Así, necesito una expresión regular que devuelva un array (esto sería con preg_match, si no me equivoco) que contenga todos los textos que hay dentro de las etiquetas <a> que tengan la clase1, por ejemplo.
Y este es el código que estoy intentando:
Código PHP :
$patron = '/<a.*?class="clase1".*?>.*?<\/a>/i'; if( preg_match($patron, $html, $arr_result) ){ echo '¡Se han encontrado patrones!'; echo '<pre>'; print_r($arr); echo '<pre>'; }else{ echo '¡No se han encontrado patrones!'; }
El resultado que me está devolviendo es:
¡Se han encontrado patrones!
Array
(
[0] => CAPTURAR ESTO 1
)
Pero debería devolver dos patrones... no uno...
¿Qué ocurre? ¿Alguien puede echarme una mano? Ya no sé qué hacer...