2013-03-01 102 views
2

我想从提供的特定URL解析HTML数据。但我无法解析数据,因为我收到了一些错误。使用DOM解析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()  

谁能帮我这个。我现在用的蛋糕PHP 2.0

+0

什么是'identifier'的具体例子的指定者()方法? – 2013-03-01 07:07:25

+0

例如我拿$ identifier = div – 2013-03-01 07:08:42

回答

2

由于错误指示,DOMDocument没有find方法。然而,它确实有很多很不错的DOM解析方法:http://www.php.net/manual/en/class.domdocument.php

如果$identifier是一个元素的名字,它将使意义使用

foreach ($html->getElementsByTagName($identifier) as $element) { 
    $value[] = $element->nodeValue + "<br>"; 
} 
+0

非常感谢:) – 2013-03-01 07:25:25

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

+0

非常感谢:) – 2013-03-01 07:25:58

1

如何阅读你的类的文档使用? DOMDocument在php.net网站上有很好的记录,并且没有提及find方法,为什么你会认为它呢?

DOMDocument有很多所熟悉的任何JavaScript开发方法,如getElementsByTagNamegetElementById这应该是你在找什么。

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

DOMDocument::loadHTMLFile可能与URL参数一起工作(不能确定,没有在这台计算机上安装PHP来检查),但如果没有,您可以合并DOMDocument::loadHTMLfile_get_contents以使其起作用。

+0

非常感谢:) – 2013-03-01 07:24:00