0

次のスクリプト スニペットがあります。もともと、createDocumentType を含める必要がある getElementById を使用することに気づいていませんでしたが、今では上記のエラーが表示されます。ここで何が間違っていますか?前もって感謝します!

...
$result = curl_exec($ch); //contains some webpage i am grabbing remotely

$dom = new DOMDocument();
$dom->createDocumentType('html', '-//W3C//DTD HTML 4.01 Transitional//EN', 'http://www.w3.org/TR/html4/loose.dtd');
$elements = $dom->loadHTML($result);
$e = $elements->getElementById('1');
...

編集:追加のメモ、DOMがリモートページで正しいことを確認しました。

4

1 に答える 1

1

DOMDocumentManualcreateDocumentTypeでわかるように、という名前のメソッドはありません。メソッドはDOMImplementation クラスに属します。次のように使用されます(マニュアルから取得):

// Creates an instance of the DOMImplementation class
$imp = new DOMImplementation;

// Creates a DOMDocumentType instance
$dtd = $imp->createDocumentType('graph', '', 'graph.dtd');

// Creates a DOMDocument instance
$dom = $imp->createDocument("", "", $dtd);

ドキュメントに HTML をロードしたいので、インポートされた HTML から決定されるため、ドキュメント タイプを指定する必要はありません。いくつかのid属性、または他の属性を ID として識別する DTD が必要です。これは HTML ファイルの一部であり、PHP コードの解析ではありません。

$dom = new DOMDocument();
$dom->loadHTML($result);
$element = $dom->getElementById('my_id');

仕事をします。

于 2013-04-09T03:56:38.683 に答える