Ein wenig neu in PHP, das hier analysiert, aber ich kann nicht scheinen, dass DomDocument von PHP zurückkommt, was eindeutig ein identifizierbarer Knoten ist. Der geladene HTML-Code kommt aus dem Internet, kann also nicht unbedingt die XML-Konformität garantieren, aber ich versuche Folgendes:
%Vor%Obwohl ich keinen Fehler erhalte, erhalte ich nur folgendes als Ausgabe:
%Vor% Sollte ich das <b>
-Tag nicht finden können, da es tatsächlich eine ID hat?
Das Handbuch erklärt warum:
Damit diese Funktion funktioniert, müssen Sie entweder einige ID-Attribute mit DOMElement- & gt; setIdAttribute () oder eine DTD, die ein Attribut vom Typ ID definiert, setzen. Im letzteren Fall müssen Sie Ihr Dokument mit DOMDocument- & gt; validate () oder DOMDocument- & gt; validateOnParse validieren, bevor Sie diese Funktion verwenden.
Auf jeden Fall, gehen Sie für gültige HTML & amp; eine DTD bereitstellen.
Schnellkorrekturen:
$dom->validate();
auf und fügen Sie die Fehler hinzu (oder beheben Sie diese), danach können Sie $dom->getElementById()
verwenden, ungeachtet der Fehler aus irgendeinem Grund. $x = new DOMXPath($dom); $el = $x->query("//*[@id='bid']")->item(0);
validateOnParse
nur auf setzen, bevor das HTML geladen wird, würde das auch funktionieren; P .
%Vor%Gibt 'Welt' hier aus.
Nun, Sie sollten überprüfen, ob $dom->loadHTML($html);
wahr (Erfolg) zurückgibt und ich würde
für die Ausgabe, um eine Ahnung zu bekommen, was falsch sein könnte.
BEARBEITEN: Ссылка - es scheint, dass DomDocument XPath intern verwendet.
Beispiel:
%Vor%