Analyse von Inhalten in HTML -Tags mit Regex
-
18-09-2019 - |
Frage
Ich möchte Inhalte von analysieren
<td>content</td>
and
<td *?*>content</td>
and
<td *specific td class*>content</td>
Wie kann ich das mit Regex, PHP und PREG Match machen?
Lösung
Ich finde Dies fasst es ziemlich gut zusammen.
Kurz gesagt, verwenden Sie keine regulären Ausdrücke, um HTML zu analysieren. Schauen Sie sich stattdessen die DOM -Klassen an und besonders Domdocument :: loadHtml
Andere Tipps
Wenn Sie ein HTML -Dokument haben, sollten Sie wirklich keine regulären Ausdrücke verwenden, um es zu analysieren: HTML ist dafür einfach nicht "regelmäßig" genug.
Eine weitaus bessere Lösung wäre, Ihr HTML -Dokument mit einem DOM -Parser zu laden - zum Beispiel, DOMDocument::loadHTML
und XPath Abfragen Mach oft einen wirklich tollen Job!
<td>content</td>
: <td>([^<]*)</td>
<td *specific td class*>content</td>
: <td[^>]*class=\"specific_class\"[^>]*>([^<]*)<
@OP, hier ist ein Weg
$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";
}
Ausgang
$ php test.php
content
content
content
multiline
content