php保存远程文件及抓URL数据

来源:互联网 发布:机锋市场 淘宝 编辑:程序博客网 时间:2024/05/22 01:50
//保存远程文件function saveRemoteImg($sUrl){global $upExt,$maxAttachSize;$reExt='('.str_replace(',','|',$upExt).')';if(substr($sUrl,0,10)=='data:image'){//base64编码的图片,可能出现在firefox粘贴,或者某些网站上,例如google图片if(!preg_match('/^data:image\/'.$reExt.'/i',$sUrl,$sExt))return false;$sExt=$sExt[1];$imgContent=base64_decode(substr($sUrl,strpos($sUrl,'base64,')+7));}else{//url图片if(!preg_match('/\.'.$reExt.'$/i',$sUrl,$sExt))return false;$sExt=$sExt[1];$imgContent=getUrl($sUrl);}if(strlen($imgContent)>$maxAttachSize)return false;//文件体积超过最大限制$sLocalFile=getLocalPath($sExt);file_put_contents($sLocalFile,$imgContent);//检查mime是否为图片,需要php.ini中开启gd2扩展$fileinfo= @getimagesize($sLocalFile);if(!$fileinfo||!preg_match("/image\/".$reExt."/i",$fileinfo['mime'])){@unlink($sLocalFile);return false;}return str_replace('../','/',$sLocalFile);}//抓URL数据function getUrl($sUrl,$jumpNums=0){$arrUrl = parse_url(trim($sUrl));if(!$arrUrl)return false;$host=$arrUrl['host'];$port=isset($arrUrl['port'])?$arrUrl['port']:80;$path=$arrUrl['path'].(isset($arrUrl['query'])?"?".$arrUrl['query']:"");$fp = @fsockopen($host,$port,$errno, $errstr, 30);if(!$fp)return false;$output="GET $path HTTP/1.0\r\nHost: $host\r\nReferer: $sUrl\r\nConnection: close\r\n\r\n";stream_set_timeout($fp, 60);@fputs($fp,$output);$Content='';while(!feof($fp)){$buffer = fgets($fp, 4096);$info = stream_get_meta_data($fp);if($info['timed_out'])return false;$Content.=$buffer;}@fclose($fp);global $jumpCount;//重定向if(preg_match("/^HTTP\/\d.\d (301|302)/is",$Content)&&$jumpNums<5){if(preg_match("/Location:(.*?)\r\n/is",$Content,$murl))return getUrl($murl[1],$jumpNums+1);}if(!preg_match("/^HTTP\/\d.\d 200/is", $Content))return false;$Content=explode("\r\n\r\n",$Content,2);$Content=$Content[1];if($Content)return $Content;else return false;}


原创粉丝点击