Analisi del contenuto nei tag html utilizzando regex
-
18-09-2019 - |
Domanda
Voglio analizzare il contenuto da
<td>content</td>
and
<td *?*>content</td>
and
<td *specific td class*>content</td>
Come posso farlo con regex, php e preg match?
Soluzione
questo lo riassume abbastanza bene.
In breve, non usare le espressioni regolari per analizzare HTML. Invece, guardate le classi DOM e soprattutto DOMDocument :: loadHTML
Altri suggerimenti
Se si dispone di un documento HTML, davvero non dovrebbe usare le espressioni regolari per analizzarlo:. HTML è solo che non "regolare" basta che
Una soluzione di gran lunga migliore sarebbe quella di caricare il documento HTML usando un parser DOM - per esempio, DOMDocument::loadHTML
e query XPath spesso fare una gran bella lavoro!
<td>content</td>
: <td>([^<]*)</td>
<td *specific td class*>content</td>
: <td[^>]*class=\"specific_class\"[^>]*>([^<]*)<
@OP, ecco un modo
$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";
}
produzione
$ php test.php
content
content
content
multiline
content