Frage

Ich versuche, einen HTML -Snippet unter Verwendung der PHP -DOM -Funktionen zu analysieren. Ich habe alles abgesehen von Absatz-, Spann- und Line -Break -Tags ausgezogen, und jetzt möchte ich den gesamten Text zusammen mit seinen begleitenden Stilen abrufen.

Also möchte ich jedes Textstück nacheinander bekommen, und für jeden kann ich dann den Baum hinaufgehen, um die Werte bestimmter Attribute zu erhalten (ich interessiere mich nur für bestimmte bestimmte, wie Farbe usw. .).

Wie kann ich das machen? Oder denke ich falsch darüber nach?

Vielen Dank!

Keine korrekte Lösung

Andere Tipps

Angenommen, Sie haben hier ein Domdocument:

$doc = new DOMDocument();
$doc->loadHTMLFile('http://stackoverflow.com/');

Sie können alle Textknoten mit einem einfachen XPath finden.

$xpath = new DOMXpath($doc);
$textNodes = $xpath->query('//text()');

Gerade foreach darüber über alle Texnoden darüber iterieren:

foreach ($textNodes as $textNode) {
    echo $textNode->data . "\n";
}

Daraus können Sie den DOM -Baum hochgehen, indem Sie verwenden ->parentNode.

Ich hoffe, dass dies Ihnen einen guten Start geben kann.

Für diejenigen, die sich mit CSS3 -Selektoren wohler fühlen und bereit sind, eine einzige zusätzliche PHP -Klasse in ihr Projekt aufzunehmen, würde ich die Verwendung von vorschlagen Einfacher PHP DOM -Parser. Die Lösung würde ungefähr wie folgt aussehen:

$html = file_get_html('http://www.example.com/');

$ret = $html->find('p, span');    
$store = array();

foreach($ret as $element) {
    $store[] = array($element->tag => array('text' => $element->innertext, 
                                            'color' => $element->color, 
                                            'style' => $element->style));
}
print_r($store);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top