Domanda

Sto cercando di analizzare un frammento di HTML, utilizzando le funzioni di PHP DOM. Ho messo a nudo fuori tutto tranne comma, della portata e di interruzione di riga tag, e ora voglio recuperare tutto il testo, insieme con i suoi stili di accompagnamento.

Quindi, mi piacerebbe ottenere ogni pezzo di testo, uno per uno, e per ognuno che può quindi risalire l'albero per ottenere i valori di particolari attributi (Mi interessa solo in alcuni tra quelli specifici, come il colore, ecc.).

Come posso fare questo? O sto pensando nel modo sbagliato?

Grazie!

Nessuna soluzione corretta

Altri suggerimenti

Supponiamo di avere un DOMDocument qui:

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

È possibile trovare tutti i nodi di testo utilizzando un semplice XPath.

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

Proprio foreach su di esso per iterare su tutti i textnodes:

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

Da questo, si può salire l'albero del DOM utilizzando ->parentNode.

Spero che questo può dare un buon inizio.

Per coloro che sono più a suo agio con selettori CSS3, e sono disposti a includere una singola classe PHP in più nel loro progetto, vorrei suggerire l'uso di Simple PHP DOM parser . La soluzione sarebbe simile al seguente:

$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);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top