Pregunta

Quiero analizar el contenido de

<td>content</td>
and
<td *?*>content</td>
and 
<td *specific td class*>content</td>

¿Cómo puedo hacer esto con expresiones regulares, php y combinar preg?

¿Fue útil?

Solución

este resume bastante bien.

En resumen, no utilizar expresiones regulares para analizar HTML. En su lugar, mirar las clases DOM y especialmente DOMDocument :: loadHTML

Otros consejos

Si usted tiene un documento HTML, que realmente no debería utilizar expresiones regulares para analizarlo:. HTML no es sólo "regular" suficiente para que

Una solución mucho mejor sería para cargar el documento HTML usando un analizador DOM - por ejemplo, DOMDocument::loadHTML y href="http://php.net/manual/en/domxpath.query.php" rel="nofollow noreferrer"> consultas XPath menudo hacer un gran trabajo!

<td>content</td>: <td>([^<]*)</td>

<td *specific td class*>content</td>: <td[^>]*class=\"specific_class\"[^>]*>([^<]*)<

@OP, aquí está una manera

$str = <<<A
<td>content</td>
<td *?*>content</td>
<td *specific td class*>content</td>
<td *?*> multiline
content </td>
A;

$s = explode("</td>",$str);
foreach ($s as $a=>$b){
    $b=preg_replace("/.*<td.*>/","",$b);
    print $b."\n";
}

salida

$ php test.php
content

content

content

 multiline
content
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top