Comment utiliser getElementById
Je veux obtenir les valeurs à l'intérieur de la tds. Je peux le faire par getElementsByTagName mais je ne pouvais pas le gérer en utilisant getElementById.
Le code HTML pourrait ressembler à ceci:
<table id="myid">
<tr>
<td>value1</td>
<td>value2</td>
</tr>
<tr>
<td>value1</td>
<td>value2</td>
</tr>
</table>
Le php utilisé pour accéder aux valeurs est:
<?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;
}
?>
MODIFIER
J'ai obtenu l'erreur:
Erreur fatale: Appel d'une fonction membre getElementsByTagName() sur un non-objet dans ...
EDIT2
Php info:
DOM/XML activé
DOM/XML Version de l'API 20031129
libxml Version 2.7.3
Système d'exploitation: Windows
- vous avez oublié de
echo
le nodeValue - Dans le cas où vous obtenez "Appel à un membre de la fonction getElementsByTagName() bla", assurez-vous d'avoir une version récente de libxml. Vous pouvez les installer manuellement ou par la mise à niveau de PHP à une version plus récente.
- réplique exacte de la stackoverflow.com/questions/9605362/...
Vous devez vous connecter pour publier un commentaire.
Que je comprends, vous voulez utiliser dans le foreach getElementById, et votre code de travail.
Comme il pourrait être vu il ya une différence dans le nom
getElement[S]ByTagName
etgetElementById
, avec un but.La définition de id, pour ainsi dire, à l'identificateur unique de l'élément dans une page, donc un seul id (unique) valeur est supposé persister sur une seule page et cette valeur ne peut pas être attribué à un autre id de l'élément. Si vous avez plus d'un élément avec la même valeur d'id, c'est faux puisque le HTML 4 ou XHTML 1.0, je pense).
La façon dont vous utilisez, est valide.
MODIFIER
Dans ce cas, vous pouvez avoir une réponse ici: Même problème déjà résolu
Le problème est que
getElementById
besoin d'un DOCTYPE. Si vous ajoutez<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
au début du fichier, il doit travailler (vous devez également ajouter du code html et des balises de corps).
Edit: Aussi vous avez besoin de mettre
$dom->validateOnParse = true;
avant de charger le fichier HTML.C'est apparemment une "fonctionnalité" de la
DomDocument
classe, voir http://php.net/manual/en/domdocument.getelementbyid.php (commentaires)loadHTMLFile
ajoutent HTML manquant squelette et traiter le HTML en HTML 4 Transitoire.validateOnParse
éteint et ça ne fonctionne pas alors (PHP 5.3.6; Ubuntu).new DOMDocument()
et composer à partir de là, comment puis-je ajouter la balise DOCTYPE?vous avez besoin de devis sur votre attribut id
getElementById
comme son nom l'indique, ne fonctionnera que si l'élément que vous ciblez a effectivement uneid
.<td>
tags aurez besoin d'unid
attribut que vous souhaitez cibler directement avecgetElementById
. Êtes-vous essayer de cibler letable
ou latd
??