简单的HTML Dom - 使用load_file时出现致命错误

Mar*_*jes 8 php html-parsing fatal-error simple-html-dom

我正在尝试解析一个HTML文件,该文件具有可怕的(相信我,它是)HTML结构,由于这个和我缺乏知识,我无法编写自己的解析器.后来我尝试使用Simple HTML Dom解析器,因为很多人(也在SO上)推荐它.

我需要simple_html_dom.php,然后创建了对象.它们似乎工作,require()函数返回"1"和var_dump() - 对象返回一个对象.

在此之后,我尝试加载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
Run Code Online (Sandbox Code Playgroud)

我检查了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" ) );
Run Code Online (Sandbox Code Playgroud)

我知道这是关于字符编码的,但这就是全部.我还没有发现谷歌或SO上的任何相关信息.

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

<?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/');

?>
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我该怎么办?或者在发生类似这样的事情时给出某种建议.

提前致谢.

Gor*_*onM 9

您的PHP构建缺少多字节字符串扩展.这种情况实际上很不寻常,除非你使用的是非常旧的PHP版本或者使用不常见的编译选项编译的版本,因为虽然默认情况下没有启用多字节扩展,但它通常被认为是现在或多或少每个PHP构建的基本扩展.

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

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


Luk*_*uke 6

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

yum install php-mbstring
httpd -k restart