我正在尝试使用“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()”。
我该怎么办?
在MAX_FILE_SIZE
定义的simple_html_dom
为600KB。
你可以编辑这个代码:define('MAX_FILE_SIZE', 600000);
在simple_html_dom.php
文件。
为我工作
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