Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用DOM解析html_Php_Html_Dom - Fatal编程技术网

Php 使用DOM解析html

Php 使用DOM解析html,php,html,dom,Php,Html,Dom,我想从提供的特定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 d

我想从提供的特定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);
有人能帮我解决这个问题吗?我正在使用cake php 2.0,这不起作用:

$html->loadHTML($url);
LoadHTML加载字符串,例如:

$html->loadHTML("<html><body>Test<br></body></html>");
请参阅:

这将不起作用:

$html->loadHTML($url);
LoadHTML加载字符串,例如:

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

请参阅:

如错误所示,
DOMDocument
没有
find
方法。但是,它确实有很多非常好的DOM解析方法:

如果
$identifier
是一个元素名,那么使用

foreach ($html->getElementsByTagName($identifier) as $element) {
    $value[] = $element->nodeValue + "<br>";
}
foreach($html->getElementsByTagName($identifier)as$element){
$value[]=$element->nodeValue+“
”; }
如错误所示,
DOMDocument
没有
find
方法。但是,它确实有很多非常好的DOM解析方法:

如果
$identifier
是一个元素名,那么使用

foreach ($html->getElementsByTagName($identifier) as $element) {
    $value[] = $element->nodeValue + "<br>";
}
foreach($html->getElementsByTagName($identifier)as$element){
$value[]=$element->nodeValue+“
”; }
阅读您正在使用的类的文档怎么样?在php.net网站上有很好的文档记录,并且没有提到
find
方法,为什么您会认为它会呢

DOMDocument
有许多方法是任何
JavaScript
开发人员都熟悉的,比如
getElementsByTagName
getElementById
,这应该是您要找的

另外,如果从URL加载HTML,则
DOMDocument::loadHTML
方法将无法工作,因为它需要包含有效HTML的字符串,而不是URI


DOMDocument::loadHTMLFile
可能与URL参数一起工作(不能确定,此计算机上没有安装要检查的PHP),但如果没有,您可以将
DOMDocument::loadHTML
文件获取内容
组合使用。

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

DOMDocument
有许多方法是任何
JavaScript
开发人员都熟悉的,比如
getElementsByTagName
getElementById
,这应该是您要找的

另外,如果从URL加载HTML,则
DOMDocument::loadHTML
方法将无法工作,因为它需要包含有效HTML的字符串,而不是URI


DOMDocument::loadHTMLFile
可能与URL参数一起工作(不能确定,这台计算机上没有安装PHP进行检查),但如果没有,您可以将
DOMDocument::loadHTML
file\u get\u contents
结合使用。

据我所见的cake PHP文档。。。domDocument类没有find()函数


就我所能看到的cake php文档而言,使用Xml类的toArray()方法怎么样。。。domDocument类没有find()函数


使用Xml类的toArray()方法怎么样?

标识符的具体示例是什么?例如,我取$identifier=div标识符的具体示例是什么?例如,我取$identifier=div