我有以下脚本代码段。最初我没有意识到使用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是否正确。
答案 0 :(得分:1)
DOMDocument
没有名为createDocumentType
的方法,您可以在Manual中看到。该方法属于DOMImplemetation class。它是这样使用的(取自手册):
// 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');
将完成这项工作。