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

使用PHP Simple HTML DOM Parser触发致命错误,寻求技术帮助

解决HtmlDomParser传入bool类型的错误

针对你遇到的Fatal error: Uncaught TypeError: Argument 1 passed to voku\helper\HtmlDomParser::loadHtml() must be of the type string, bool given错误,即使你确认$html是string类型,也可以从以下几个方向排查:

  • 排查curl请求的潜在错误
    虽然你设置了CURLOPT_RETURNTRANSFER,但curl请求失败时curl_exec仍会返回false,你当前的代码未做错误检查,可能测试时请求成功,但实际运行时出现了请求失败的情况。修改代码,在curl_exec后、curl_close前添加错误检查:

    $html = curl_exec($curl);
    // 新增curl错误检查
    if ($html === false) {
        echo 'Curl请求错误: ' . curl_error($curl);
        curl_close($curl);
        exit;
    }
    curl_close($curl);
    
  • 检查$html是否为空字符串
    有些情况下curl请求成功(返回string),但目标网站返回空内容,空字符串传入HtmlDomParser::str_get_html()后,内部处理可能触发类型错误。可以在初始化解析器前添加判断:

    if (empty(trim($html))) {
        echo '获取到的HTML内容为空';
        exit;
    }
    $htmlDomParser = HtmlDomParser::str_get_html($html);
    
  • 验证USER_AGENT常量是否正确定义
    若constants.php中未正确定义USER_AGENT常量,curl会使用默认UA,部分网站会拦截此类请求,导致返回空或错误内容。可以直接替换为一个合法的UA字符串测试:

    curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36');
    
  • 处理HTML编码问题
    目标网站的HTML编码可能与解析器预期不符,导致解析器内部处理失败。可以尝试统一编码后再传入解析器:

    $html = mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8');
    $htmlDomParser = HtmlDomParser::str_get_html($html);
    

内容的提问来源于stack exchange,提问作者Martyn Oliver

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 22:10:30