Wie zu verwenden getElementById
Ich möchte die Werte innerhalb tds. Ich kann es tun, indem getElementsByTagName, aber ich konnte nicht verwalten es durch die Verwendung von getElementById.
Den HTML könnte so Aussehen:
<table id="myid">
<tr>
<td>value1</td>
<td>value2</td>
</tr>
<tr>
<td>value1</td>
<td>value2</td>
</tr>
</table>
Die php verwendet, um den Zugriff auf die Werte ist:
<?PHP
$dom = new DOMDocument();
$dom->loadHTMLfile('http://remoteDomain/thispage.html');
$table=$dom->getElementById('myid');
foreach($table->getElementsByTagName('tr') as $key =>$tr){
$tr->getElementsByTagName('td')->item(0)->nodeValue;
}
?>
BEARBEITEN
Bekam ich die Fehlermeldung:
Fatal error: Call to a member function getElementsByTagName() on a non-object in ...
EDIT2
Php-info:
DOM/XML enabled
DOM/XML API Version 20031129
libxml Version 2.7.3
Betriebssystem: Windows
- du hast vergessen zu
echo
die nodeValue - In Fall erhalten Sie "Rufen Sie an eine member-Funktion getElementsByTagName() blabla" machen Sie sicher, dass eine aktuelle version von libxml. Sie können entweder installieren Sie diese manuell oder durch eine Aktualisierung von PHP auf eine neuere version.
- exakte Kopie von stackoverflow.com/questions/9605362/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
So, ich verstehe, Sie wollen in foreach getElementById, und Ihr code funktioniert.
Als könnte es gesehen werden, es ist der Unterschied in den Namen
getElement[S]ByTagName
undgetElementById
mit Zweck.Die definition von id ist so zu sagen werden eindeutige Kennung des Elements in einer Seite, also nur ein id (eindeutigen) Wert der davon ausgegangen wird, bestehen auf eine einzige Seite, und dieser Wert kann nicht zugewiesen werden, um ein weiteres element-id. Wenn Sie mehr als ein element mit der gleichen id-Wert vorhanden, es ist falsch (seit HTML 4 oder XHTML 1.0, glaube ich).
Den Weg, die Sie verwenden, sieht gültig.
BEARBEITEN
In diesem Fall müssen Sie möglicherweise eine anwser hier: Gleiche problem bereits gelöst
Das problem ist, dass
getElementById
muss ein DOCTYPE. Wenn Sie hinzufügen<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
am Anfang der Datei, sollte es funktionieren (Sie sollten auch html und body-tags).
Edit: Auch Sie müssen
$dom->validateOnParse = true;
vor dem laden der HTML-Datei.Dies ist anscheinend ein "feature" der
DomDocument
- Klasse finden Sie in http://php.net/manual/en/domdocument.getelementbyid.php (Kommentare)loadHTMLFile
fügen Sie alle fehlenden HTML-Gerüst und behandeln den HTML-Code als HTML 4 Transitional.validateOnParse
ausgeschaltet und es hat nicht funktioniert dann (PHP 5.3.6; Ubuntu).new DOMDocument()
und Komponieren von dort aus, wie füge ich die DOCTYPE-tag?müssen Sie die Zitate auf Ihrer id-Attribut
getElementById
wie der name schon sagt, wird nur funktionieren, wenn das element, das Sie sind targeting tatsächlich eineid
.<td>
tags benötigen einid
- Attribut, die Sie ansprechen möchten, wie Sie direkt mitgetElementById
. Sind Sie versuchen, um das Zieltable
oder dietd
??