2

我想从提供的特定 url 解析 HTML 数据。但我无法解析数据,因为我收到的错误很少。

这是我的代码:-

    $html = new DOMDocument();
    $html->loadHTML($url);  //$url is where the site url is defined
    $value = array();
    foreach($html->find($identifier) as $element) //$identifier is where div, a etc is stored
    {
        $value[] = $element->src."<br />";
    }
    print_r($value);

我收到以下错误

Call to undefined method DOMDocument::find()    

谁能帮我解决这个问题。我正在使用 cake-php 2.0

4

4 回答 4

2

如错误所示,DOMDocument没有find方法。但是,它确实有很多非常好的 DOM 解析方法:http ://www.php.net/manual/en/class.domdocument.php

如果$identifier是元素名称,则使用它是有意义的

foreach ($html->getElementsByTagName($identifier) as $element) {
    $value[] = $element->nodeValue + "<br>";
}
于 2013-03-01T07:12:35.673 回答
1

这将不起作用:

$html->loadHTML($url);

LoadHTML 加载一个字符串,例如:

$html->loadHTML("<html><body>Test<br></body></html>");

尝试使用 loadHTMLfile:

$html->loadHTMLFile("filename.html");

见:http ://www.php.net/manual/en/domdocument.loadhtmlfile.php

于 2013-03-01T07:12:30.793 回答
1

阅读有关您正在使用的课程的文档怎么样?DOMDocument在 php.net 站点上有很好的文档记录,并且没有提及find方法,您为什么认为它会这样做?

DOMDocument有许多任何JavaScript开发人员都熟悉的方法,例如您正在寻找的应该是什么getElementsByTagNamegetElementById

此外,如果您从 URL 加载 HTML,该DOMDocument::loadHTML方法将不起作用,因为它需要一个包含有效 HTML 的字符串,而不是 URI。

DOMDocument::loadHTMLFile可能与 URL 参数一起工作(不能确定,没有在这台计算机上安装 PHP 来检查),但如果没有,你可以结合起来DOMDocument::loadHTML让它file_get_contents工作。

于 2013-03-01T07:13:39.247 回答
0

据我所见,蛋糕 php 文档...... domDocument 类没有 find() 函数。

如何使用此处记录的 Xml 类的 toArray() 方法

于 2013-03-01T07:28:30.263 回答