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?

War es hilfreich?

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top