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?

Foi útil?

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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top