Analisando o conteúdo em tags html usando regex
-
18-09-2019 - |
Pergunta
Eu quero analisar conteúdo de
<td>content</td>
and
<td *?*>content</td>
and
<td *specific td class*>content</td>
Como posso fazer isso com o REGEX, PHP e Preg Match?
Solução
Eu penso isto resume muito bem.
Em suma, não use expressões regulares para analisar HTML. Em vez disso, olhe para as classes dom e especialmente DomDocument :: loadHtml
Outras dicas
Se você possui um documento HTML, realmente não deve usar expressões regulares para analisá -lo: o HTML simplesmente não é "regular" o suficiente para isso.
Uma solução muito melhor seria carregar seu documento HTML usando um analisador DOM - por exemplo, DOMDocument::loadHTML
e Consultas XPath Frequentemente, faça um ótimo trabalho!
<td>content</td>
: <td>([^<]*)</td>
<td *specific td class*>content</td>
: <td[^>]*class=\"specific_class\"[^>]*>([^<]*)<
@OP, aqui está uma maneira
$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";
}
resultado
$ php test.php
content
content
content
multiline
content