致命错误:在第8行的/home4/msaraiva/public_html/test.php中对非对象调用成员函数find()
我有一个简单的解析器,我正在努力使它工作。但是我得到了一个致命的错误:在第8行的/home4/msaraiva/public_html/test.php中,对非对象调用成员函数find(),每个错误都在第1行。但是:在这个url(只有78条记录)上,它工作得很好,但是当我转到一个有399条记录的url时,解析器将我带到一个致命错误,我尝试了所有方法,但它不工作。PS:所有页面都有相同的html结构 谢谢大家致命错误:在第8行的/home4/msaraiva/public_html/test.php中对非对象调用成员函数find(),php,parsing,find,Php,Parsing,Find,我有一个简单的解析器,我正在努力使它工作。但是我得到了一个致命的错误:在第8行的/home4/msaraiva/public_html/test.php中,对非对象调用成员函数find(),每个错误都在第1行。但是:在这个url(只有78条记录)上,它工作得很好,但是当我转到一个有399条记录的url时,解析器将我带到一个致命错误,我尝试了所有方法,但它不工作。PS:所有页面都有相同的html结构 谢谢大家 <?php include_once('simple_html_dom.php'
<?php
include_once('simple_html_dom.php');
$html=file_get_html("http://jantes.rupteur.com/jantes-alu/Alfa-Romeo-145");
foreach ($html ->find('td[valign=top]') as $t){
foreach ($t ->find('h1') as $k)
foreach ($t ->find('strong') as $g)
echo $k;
echo $g .'<br>';
foreach ($html ->find('td[valign=top]') as $f)
$num = explode('/>',$f);
echo strip_tags($num[1]);
}
echo '<br>';
?>
这可能是因为默认情况下,如果正在解析的html代码长度大于600000,则函数返回
false
。您的第二个页面非常大,因此在simple\u html\u dom.php文件中增加MAX\u FILE\u SIZE
常量
define('MAX_FILE_SIZE', 9999999);
听听@PeeHaa和@Chris的评论:没有什么可以被“遗忘”的,以防有人遇到这个问题
function get_data($url)
{
$ch = curl_init();
$timeout = 5;
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
$url = "your url";
$htmlraw = "";
// this is the important bit (curl function is irrelevant)
$htmlraw = get_data($url);
// use the str_get_html function instead.
$html = str_get_html($htmlraw);
希望这对别人有帮助 我相信你忘记了一些大括号…不,我想没有,因为在阿尔法-罗密欧-145上它100%正确,但在阿尔法-罗密欧-159(有很多记录)上它给了我错误,我检查了所有的html,它都是一样的,所以你的变量命名很糟糕…而且你的缩进。。。古怪不是什么可以“忘记”的东西。调试构思糟糕的代码时遇到问题——这就是为什么应该使用更好的变量名、标准缩进和大括号。它使您的代码可读性和可调试性。