调用未定义的方法DOMDocument :: createDocumentType()

时间:2013-04-09 03:37:45

标签: php curl domdocument

我有以下脚本代码段。最初我没有意识到使用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是否正确。

1 个答案:

答案 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');

将完成这项工作。