【问题标题】:Simple HTML Dom - Fatal error when using load_file简单的 HTML Dom - 使用 load_file 时出现致命错误
【发布时间】:2012-07-14 01:58:09
【问题描述】:

我正在尝试解析具有糟糕(相信我,确实如此)HTML 结构的 HTML 文件,由于这一点以及我缺乏知识,我无法编写自己的解析器。后来我尝试使用 Simple HTML Dom 解析器,因为很多人(在 SO 上也是如此)推荐它。

我需要 simple_html_dom.php,然后创建了对象。它们似乎有效,require() 函数返回“1”,而 var_dump()-ing 对象返回一个对象。

在此之后,我尝试按照手册中的方式加载 URL,但无论我尝试什么 URL,我都遇到了致命错误。错误如下:

Fatal error: Call to undefined function mb_detect_encoding() in 
             /home/fema/web/subdomain/devel/www_root/parser/
             simplehtmldom_1_5/simple_html_dom.php on line 988

我查看了第 988 行的内容,如下:

// Have php try to detect the encoding from the text given to us.
        $charset = mb_detect_encoding($this->root->plaintext . "ascii", 
                   $encoding_list = array( "UTF-8", "CP1252" ) );

我知道这是关于字符编码的,但仅此而已。无论是在谷歌还是在 SO 上,我都没有找到任何关于此的信息。

我的整个代码是(占位符 URL):

<?php

require('simplehtmldom_1_5/simple_html_dom.php');

// Create a DOM object
$dom = new simple_html_dom();

$dom->load_file('http://www.google.com/');

?>

谁能告诉我该怎么做?或者在发生这种情况时提供某种建议。

提前致谢。

【问题讨论】:

    标签: php html-parsing fatal-error simple-html-dom


    【解决方案1】:

    您的 PHP 版本缺少多字节字符串扩展。这种情况实际上很不寻常,除非您使用的是非常旧的 PHP 版本或使用不寻常的编译选项编译的版本,因为虽然默认情况下未启用多字节扩展,但它通常被认为是其中之一这些天来每个 PHP 构建或多或少都有的基本扩展。

    如果您运行的是旧版本的 PHP,我强烈建议您升级,如果您有一个相当新的版本,请使用 phpinfo() 检查您是否安装了多字节。如果您不这样做,那么您可能需要从源代码重新安装或重建 PHP。

    如果已安装,--enable-mbstring 应该在编译选项列表中。有关更多详细信息,请参阅有关多字节扩展的 PHP 手册,尤其是 chapter on installation

    【讨论】:

    • 感谢您的回答,它是 PHP 5.3,但我会问我的朋友。 (我正在使用他的服务器。)
    • 看来你是对的,但是没有足够的内存来编译一个新的 PHP,他说。谢谢你的回答。
    【解决方案2】:

    我在使用 Amazon EC2 和 PHP 的标准安装时遇到了同样的问题。我做了以下(在http://php.net/manual/en/mbstring.installation.php 上找到)解决了这个问题:

    百胜安装 php-mbstring httpd -k 重启

    【讨论】:

    • 如果没有yum,您可以在与上述答案相同的页面中使用sudo apt-get install php7.0-mbstring
    【解决方案3】:

    删除 load_file() 方法中提供的 URL 字符串中的尾部正斜杠 (/) 即可。
    显然,简单 HTML DOM 库的 load_file() 方法存在将正斜杠附加到 URL 字符串末尾的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-23
      • 1970-01-01
      • 1970-01-01
      • 2016-11-26
      • 2015-06-15
      • 1970-01-01
      • 2016-10-20
      • 1970-01-01
      相关资源
      最近更新 更多