0

PHP DOMDocument クラスを使用して HTML ファイルを解析し、コードを使用しています。

$dom =new DOMDocument();
@$dom->loadHTMLFile($file_path);
$dom->getElementById("my_id")

IDが「my_id」の要素のデータを取得しますが、問題はHTMLドキュメントに同じIDの複数の要素が含まれており、そのすべての要素のデータが必要です.HTMLコード、

<div id="my_id">
     phone number 123
</div>
<div id="my_id">
     address somewhere 
</div>
 <div id="my_id">
     date of birth
</div>

IDが一意であることは知っていますが、ここではそのような場合です..この場合、getElementById()は配列を返します..

4

4 に答える 4

1

いいえ、何かgetElementById()が返される場合はDOMElement。複数のノードが返される場合、結果はになりますが、DOMNodeListここでは適用されません。

さらに、他の属性とは異なる実際のXML ID属性としてid属性を定義するDTDまたはスキーマファイルに対してドキュメントを検証するまで、 DOMはI​​Dを認識しません。そのためDOMAttr、メソッドがisIdあり、XMLではIDが一意の値である必要があります。VolkerKがコメントで指摘したように、を使用するloadHTMLFileと、この検証は自動的に行われます。

PHP DOM XML解析を単純化するための私の答えを参照してください-どのように?詳細については。

于 2010-08-17T11:08:08.073 に答える
0

いいえ。getElementByIdの値が未定義であることがわかりますが、要素がDIVであることがわかります。

于 2010-08-17T11:09:25.837 に答える
0

あなた (または他の誰か) が入ってくるデータを修正する方法が絶対にない場合 (指摘されているように、それが唯一正しいことです)、これは、SimpleHTMLDOM のより寛大な解析が有効であることが判明した場合です。

これをどのように処理するかは試していませんが、想像できました

foreach ($html->find('div[id=my_id]') as $element)
 echo "Found ".$element->id."<br>";

必要に応じて機能します。

于 2010-08-17T11:23:50.063 に答える
0

ID属性のXPathクエリが役立つ場合があります。

于 2010-08-17T11:12:13.780 に答える