所以伙计们,我的代码是:
<?php
include('simple_html_dom.php');
$url = "http://www.google.si";
$html = file_get_html($url);
$largest_file_size=0;
$largest_file_url='';
// Go through all images of that page
foreach($html->find('img') as $element){
// Helper function to make absolute URLs from relative
$img_url=$this->InternetCombineUrl($url,$element->src);
// Try to get image file size info from header:
$header=array_change_key_case(get_headers($img_url, 1));
// Only continue if "200 OK" directly or after first redirect:
if($header[0]=='HTTP/1.1 200 OK' || @$header[1]=='HTTP/1.1 200 OK'){
if(!empty($header['content-length'])){
// If we were redirected, the second entry is the one.
// See http://us3.php.net/manual/en/function.filesize.php#84130
if(!empty($header['content-length'][1])){
$header['content-length']=$header['content-length'][1];
}
if($header['content-length']>$largest_file_size){
$largest_file_size=$header['content-length'];
$largest_file_url=$img_url;
}
}else{
// If no content-length-header is sent, we need to download the image to check the size
$tmp_filename=sha1($img_url);
$content = file_get_contents($img_url);
$handle = fopen(TMP.$tmp_filename, "w");
fwrite($handle, $content);
fclose($handle);
$filesize=filesize(TMP.$tmp_filename);
if($filesize>$largest_file_size){
$largest_file_size=$filesize;
$largest_file_url=$img_url;
unlink(TMP.$tmp_filename);
}
}
}
}
?>
我遇到问题: 致命错误:在第11行的C:\ xampp \ htdocs \ sandbox \ agregat \ test.php中不在对象上下文中时使用$ this
请帮忙吗?
答案 0 :(得分:1)
有错误消息说明了一切。
来自the manual:
当从对象上下文中调用方法时,伪变量$ this可用。 $ this是对调用对象的引用(通常是方法所属的对象,但如果从辅助对象的上下文中静态调用该方法,则可能是另一个对象)。
你不能在课外使用它。看起来代码被切断&amp;从类中粘贴,如果没有先修改就无法工作。
答案 1 :(得分:1)
问题出在这一行
$img_url=$this->InternetCombineUrl($url,$element->src);
您使用$ this this引用不存在的对象。 $ this只能在类中使用,并且可以对当前对象进行引用。您可以使用类包装代码,还需要提供 InternetCombineUrl 方法。另一个解决方案是删除 $ this-&gt; ,但是您需要创建函数 InternetCombineUrl ,它也可以正常工作。