解析大型html文件时使用“PHP Simple HTML DOM Parser”会导致错误

问题描述 投票:1回答:2

我正在尝试使用“PHP Simple HTML DOM Parser”解析大型HTML文件。代码是这样的:

<?php
    include('/lib/simplehtmldom/simple_html_dom.php');

    $data_url = "data/data.html";

    $date_html = file_get_html($data_url);
    foreach($date_html->find('li a') as $element){
        $data = $element->href;
        echo $data;
    }
?>

“data.html”的大小约为3MB。执行代码导致“致命错误:在第7行的C:\ xampp \ htdocs \ parser \ index.php中的非对象上调用成员函数find()”。

我该怎么办?

php
2个回答
2
投票

MAX_FILE_SIZE定义的simple_html_dom为600KB。

你可以编辑这个代码:define('MAX_FILE_SIZE', 600000);simple_html_dom.php文件。

为我工作


0
投票

file_get_html在尝试读取文件data/data.html时失败

在这种情况下,存储在$date_html中的返回值不是对象。稍后调用方法find会引发你得到的错误。


1.

当您尝试解析大文件时,您需要增加simplehtmldom允许的最大文件大小,默认情况下设置为600.000字节(因此不需要)。

你可以用define( 'MAX_FILE_SIZE', 4000000 ); // Max file size 4MB appox.做到这一点

在包含库之前:

define( 'MAX_FILE_SIZE', 4000000 ); // Max file size 4MB appox.
include('/lib/simplehtmldom/simple_html_dom.php');

2.

如果调整MAX_FILE_SIZE无法解决问题,请确保data/data.html是要解析的文件的正确相对路径。

如果找不到该文件,file_get_html将失败。

在这种情况下,您可以尝试传递绝对路径(以/开头的路径),例如:

/var/data/data.html

© www.soinside.com 2019 - 2024. All rights reserved.