2

我一直在挑选代码片段,您可以大致看到我正在尝试做的事情,显然这不起作用并且是完全错误的:

<?php

$dom= new DOMDocument();
$dom->loadHTMLFile('http://example.com/');
$data = $dom->getElementById("profile_section_container");
$html = $data->saveHTML();
echo $html;

?>

使用 CURL 调用,我可以检索文档 URL 源:

function curl_get_file_contents($URL)
{
$c = curl_init();
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($c, CURLOPT_URL, $URL);
$contents = curl_exec($c);
curl_close($c);

if ($contents) return $contents;
else return FALSE;
}

$f = curl_get_file_contents('http://example.com/'); 
echo $f;

那么我现在如何使用它在 PHP 中实例化 DOMDocument 对象并使用getElementById提取节点

4

5 回答 5

6

这是避免任何格式错误的 HTML 错误所需的代码:

$dom = new DOMDocument();
libxml_use_internal_errors(true);
$dom->loadHTMLFile('http://example.com/');
$data = $dom->getElementById("banner");
echo $data->nodeValue."\n"

要转储整个 HTML 源代码,您可以调用:

echo $dom->saveHTML();
于 2012-06-06T21:04:05.857 回答
2
<?php

$f = curl_get_file_contents('http://example.com/')

$dom = new DOMDocument();
@$dom->loadHTML($f);
$data = $dom->getElementById("profile_section_container");
$html = $dom->saveHTML($data);
echo $html;

?>

如果您提供示例 html,将会有所帮助。

于 2012-06-06T20:31:25.440 回答
1

我不确定,但我记得一旦我想使用它,我就无法将一些外部 url 作为文件加载,因为 php.ini 指令allow-url-fopen被设置为关闭......

因此,请检查您的 pnp.ini 或尝试使用 fopen 打开 url 以查看是否可以将 url 作为文件读取

<?php
$f = file_get_contents(url);
var_dump($f); // just to see the content
?>

问候;

咪咪

于 2012-06-06T20:20:52.230 回答
0

尝试这个:

$dom= new DOMDocument();
$dom->loadHTMLFile('http://example.com/');
$data = $dom->getElementById("profile_section_container")->item(0);
$html = $data->saveHTML();
echo $html;
于 2012-06-06T20:19:46.997 回答
0

我认为现在你可以使用DOMDocument::loadHTML 也许你应该尝试 Doctype 存在(使用正则表达式),然后在必要时添加它,以确保它声明......问候

咪咪兹

于 2012-06-06T20:38:12.183 回答