2016-03-30 8 views
1

Ich versuche, den gesamten Spalteninhalt in HTML-Tabellen zu erfassen. Ich bin sehr nah dran, aber meine Regex erfasst nur die erste Spalte jeder Tabelle. Was muss ich tun, um alle Spalten zu erfassen?Regex-Wiederholungsmuster zum Erfassen aller HTML-Tabellenspalten Inhalt

Hier ist meine regex und HTML: https://regex101.com/r/jA3sS6/1

+2

Gibt es Gründe, nicht mit PHP 'DOMDocument' lesen? – frz3993

+0

http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 Erstellen Sie eine Zustandsmaschine (oder verwenden Sie frz3993's Methode. Es ist wahrscheinlich eine Zustandsmaschine unter die Haube) – Petro

+0

Wow, ich wünschte, ich hätte über https://regex101.com vor langer Zeit gewusst. –

Antwort

1

nicht regulären Ausdruck verwenden Sie einen Parser verwenden Sie stattdessen!

beginnen mit diesem:

$dom = new DOMDocument(); 
libxml_use_internal_errors(1); 
$dom->loadHTML($html); 
$xpath = new DOMXPath($dom); 

Um alle abrufen <td>:

foreach($dom->GetElementsByTagName('td') as $td) 
{ 
    echo $td->nodeValue . PHP_EOL; 
} 

Um alle <td class="large-text"> abrufen:

foreach($xpath->query('//td[@class="large-text"]') as $td) 
{ 
    echo $td->nodeValue . PHP_EOL; 
} 

Verwandte Themen