致命错误:在第8行的/home4/msaraiva/public_html/test.php中对非对象调用成员函数find()

致命错误:在第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'

我有一个简单的解析器,我正在努力使它工作。但是我得到了一个致命的错误:在第8行的/home4/msaraiva/public_html/test.php中,对非对象调用成员函数find(),每个错误都在第1行。但是:在这个url(只有78条记录)上,它工作得很好,但是当我转到一个有399条记录的url时,解析器将我带到一个致命错误,我尝试了所有方法,但它不工作。PS:所有页面都有相同的html结构

谢谢大家

<?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,它都是一样的,所以你的变量命名很糟糕…而且你的缩进。。。古怪不是什么可以“忘记”的东西。调试构思糟糕的代码时遇到问题——这就是为什么应该使用更好的变量名、标准缩进和大括号。它使您的代码可读性和可调试性。