Ich parsen ein HTML-Dokument mit XPATH und möchte alle inneren HTML-Tags behalten.
Das betreffende HTML ist eine ungeordnete Liste mit vielen Listenelementen.
BusinessContract
Ich parsiere das Dokument mit folgendem PHP-Code
$dom = new DOMDocument();
@$dom->loadHTML($output);
$this->xpath = new DOMXPath($dom);
$testDom = $this->xpath->evaluate("//ul[@id='adPoint1']");
$test = $testDom->item(0)->nodeValue;
echo htmlentities($test);
Aus irgendeinem Grund werden die HTML-Tags im Ausgabewert immer weggelassen. Ich nehme an, dass dies daran liegt, dass XPATH nicht dafür gedacht war, auf diese Weise verwendet zu werden. Gibt es dennoch eine Lösung dafür?
Ich möchte wirklich weiterhin XPATH verwenden, da ich es bereits zur Analyse anderer Bereiche der Seite (einfache a href-Elemente) ohne Probleme verwende.
EDIT: Ich weiß, dass es einen besseren Weg gibt, um die Daten zu erhalten, indem man durch die Unterelemente der UL iteriert. Es gibt einen komplizierteren Teil der Seite, den ich ebenfalls analysieren möchte (Block von JavaScript), aber ich versuche, ein leicht verständliches Beispiel zu geben.
Der tatsächliche Codeblock, den ich möchte, ist
document.write(rot_decode('<u7>Pbagnpg Qrgnvyf</u7><qy vq="pbagnpgQrgnvyf"><qg>Cu:</qg><qq>(58) 0078 8455</qq></qy>'));
Er hat das Problem, dass er alle abschließenden Tags auslässt, aber die öffnenden Tags beibehält. Ich vermute, dass XPATH versucht, die inneren Elemente zu parsen, anstatt sie einfach als Zeichenfolge zu behandeln.
Wenn ich versuche, das Skriptelement mit folgendem Code auszuwählen
$testDom = $this->xpath->evaluate("//div[@id='businessDetails']/script");
$test = $testDom->item(0)->nodeValue;
echo htmlentities($test);
wird mein Ausgabewert sein, der alle abschließenden Tags fehlt.
document.write(rot_decode('Pbagnpg QrgnvyfCu:(58) 0078 8455'));