You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:使用curl与simple_html_dom打印HTML页面源码失败,求解决

解决方法:用CURL和simple_html_dom获取/打印HTML源码

嘿,我来帮你排查问题!你的代码里有个关键错误:stream_get_contents($html) 不能这么用——$html 是 simple_html_dom 的对象实例,不是流资源,这个函数只适用于处理流,所以会导致失败。

下面分两种场景给你正确的实现方式:

场景1:直接获取并打印页面原始源码(不需要解析)

如果你的需求只是拿到页面的原始HTML源码,其实完全不需要用到simple_html_dom,直接用CURL返回的响应内容就行:

// 初始化CURL
$curl = curl_init('https://google.com');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
// 执行请求并获取响应
$response = curl_exec($curl);
curl_close($curl);

// 直接打印原始源码(用htmlspecialchars避免浏览器渲染,直接显示源码)
echo htmlspecialchars($response);

场景2:用simple_html_dom解析后,获取(或修改后)的HTML源码

如果你需要先解析HTML做一些操作,再输出源码,那应该用simple_html_dom提供的save()方法,而不是stream_get_contents:

// 先通过CURL获取页面内容
$curl = curl_init('https://google.com');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($curl);
curl_close($curl);

// 用simple_html_dom加载并解析
$html = new simple_html_dom();
$html->load($response);

// (可选)这里可以对HTML做修改,比如修改标题
// $html->find('title', 0)->innertext = '自定义标题';

// 获取解析后的HTML源码并打印
$source = $html->save();
echo htmlspecialchars($source);

// 记得清理资源,避免内存泄漏
$html->clear();

额外提示:

  • 用htmlspecialchars()包裹输出内容,能让浏览器直接显示HTML源码,而不是渲染成网页,方便你查看原始内容。
  • 务必确保CURL配置了CURLOPT_RETURNTRANSFER为true,这样curl_exec()才会返回响应内容,而不是直接输出到页面。

内容的提问来源于stack exchange,提问作者Muhammad Faisal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:38:29