PHP: recoger fragmentos de una cadena mediante preg_match_all

Supongamos que tenemos un texto largo en HTML que forma una cadena de texto:

<p>Listado de elementos</p>
<ul>
 <li><a href="#">Elemento 1</a></li>
 <li class="elegido"><a href="#">Elemento 2</a></li>
 <li><a href="#">Elemento 3</a></li>
 <li><a href="#">Elemento 4</a></li>
 <li class="elegido"><a href="#">Elemento 5</a></li>
 <li><a href="#">Elemento 6</a></li>
</ul>

Y queremos sacar únicamente los elementos LI con class="elegido".

Esto es posible con la funcion PHP preg_match_all, que nos devolverá un array con los fragmentos que haya encontrado:

<?
$htmlOriginal = '<p>Listado de elementos</p>
<ul>
 <li><a href="#">Elemento 1</a></li>
 <li class="elegido"><a href="#">Elemento 2</a></li>
 <li><a href="#">Elemento 3</a></li>
 <li><a href="#">Elemento 4</a></li>
 <li class="elegido"><a href="#">Elemento 5</a></li>
 <li><a href="#">Elemento 6</a></li>
</ul>';

$htmlABuscar = '/<li class="elegido".*li>/';

preg_match_all($htmlABuscar, $htmlOriginal, $htmlFinal);

echo $htmlFinal[0]; // <li class="elegido"><a href="#">Elemento 2</a></li>
echo $htmlFinal[1]; // <li class="elegido"><a href="#">Elemento 5</a></li>
?>

Saber más sobre preg_match_all.

Una respuesta a «PHP: recoger fragmentos de una cadena mediante preg_match_all»

Los comentarios están cerrados.