0

我有以下脚本片段。最初我没有意识到使用 getElementById 需要包含 createDocumentType,但现在我得到了上面列出的错误。我在这里做错了什么?提前致谢!

...
$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

DOMDocumentcreateDocumentType正如您在手册中看到的那样,没有名为的方法。该方法属于DOMImplemetation 类。它是这样使用的(取自手册):

// 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 回答