PHP圖片采集類
collection.class.php
?<?php class Collection{ protected $url; //采集地址 protected $prefix; //重命名文件前綴 protected $style; //需要采集的圖片格式,傳入一個數組 const prel = '/(?:http?|https?):\/\/(?:[^\.\/\(\)\?]+)\.(?:[^\.\/]+)\.(?:com|cn|net|org)\/(?:[^\.:\"\'\(\)\?]+)\.(jpg|png|gif)/i'; //采集規則 //構造函數 function __construct($url,$prefix,$style){ switch($this->checkdata($url,$prefix,$style)){ case 1: echo '<script>alert("采集地址不能為空!")</script>'; exit; break; case 2: echo '<script>alert("需要采集的圖片格式,應該為數組!")</script>'; exit; break; case 3: echo '<script>alert("需要采集的圖片格式,不能為空!")</script>'; exit; break; case 4: echo '<script>alert("文件名不能含有. / |或用空格開頭!")</script>'; exit; } $this->url = $url; $this->prefix = $prefix; $this->style = $style; } //開始采集數據 public function action(){ $url = $this->checkurl(); $imgurl = $this->collecturl($url); $this->savafile($imgurl); } //url處理 protected function checkurl(){ $munprel = '/\([0-9]+,[0-9]+\)/i'; $myurl; if(preg_match($munprel,$this->url,$arr)){ $temp = substr($arr[0],1,strlen($arr[0])-2); $mymunber = explode(',',$temp); $temparr = explode($arr[0],$this->url); for($i=$mymunber[0];$i<=$mymunber[1];$i++){ $myurl[] = $temparr[0].$i.$temparr[1]; } }else{ $myurl = $this->url; } return $myurl; } //文件保存 protected function savafile($imgurl){ if(!empty($imgurl)){ foreach($imgurl[0] as $key=>$value){ $filename = ''; if(in_array($imgurl[1][$key],$this->style)){ $size = @getimagesize($value); if($size === false){ continue; } list($w,$h,$t,$a) = $size; if($w<200 || $h<200){ continue; } ob_start(); readfile($value); $obj = ob_get_contents(); ob_end_clean(); $dir = 'F:/php/'; if(!is_dir($dir)){ mkdir($dir,0777); } if(!empty($this->prefix)){ $filename = $dir.$this->prefix.date('Ymd').rand(10000,99999).'.'.$imgurl[1][$key]; }else{ $filename = $dir.date('Ymd').rand(10000,99999).'.'.$imgurl[1][$key]; } $fo = @fopen($filename,'wb'); if($fo === false){ echo '<script>alert("創建文件失敗,文件目錄不可寫!")</script>'; exit; } $fw = fwrite($fo,$obj); echo '<div style="width:350px;background:#ddd;">'.$filename.'采集成功</div>'; } } } } //地址采集函數,包括圖片后綴名 protected function collecturl($url){ set_time_limit(0); if(is_array($url)){ $arr = array(); $imgkey = array(); foreach($url as $value){ $code = file_get_contents($value); preg_match_all(self::prel,$code,$arrimg); $arr = array_merge($arr,$arrimg[0]); $imgkey = array_merge($imgkey,$arrimg[1]); } return array($arr,$imgkey); }else{ $code = file_get_contents($url); preg_match_all(self::prel,$code,$arrimg); return $arrimg; } } //檢驗數據 private function checkdata($url,$prefix,$style){ if(empty($url)){ return 1; }elseif(!is_array($style)){ return 2; }elseif(count($style)==0){ return 3; }elseif(stripos($prefix,'.') !== false || stripos($prefix,'/') !== false || stripos($prefix,'|') !== false){ return 4; } } } ?>
PHP圖片采集程序--圖片采集類
class Collection{ protected $url; //采集地址 protected $prefix; //重命名文件前綴 protected $style; //需要采集的圖片格式,傳入一個數組 const prel = '/(?:http?|https?):\/\/(?:[^\.\/\(\)\?]+)\.(?:[^\.\/]+)\.(?:com|cn|net|org)\/(?:[^\.:\"\'\(\)\?]+)\.(jpg|png|gif)/i'; //采集規則 //構造函數 function __construct($url,$prefix,$style){ switch($this->checkdata($url,$prefix,$style)){ case 1: echo '<script>alert("采集地址不能為空!")</script>'; exit; break; case 2: echo '<script>alert("需要采集的圖片格式,應該為數組!")</script>'; exit; break; case 3: echo '<script>alert("需要采集的圖片格式,不能為空!")</script>'; exit; break; case 4: echo '<script>alert("文件名不能含有. / |或用空格開頭!")</script>'; exit; } $this->url = $url; $this->prefix = $prefix; $this->style = $style; } //開始采集數據 public function action(){ $url = $this->checkurl(); $imgurl = $this->collecturl($url); $this->savafile($imgurl); } //url處理 protected function checkurl(){ $munprel = '/\([0-9]+,[0-9]+\)/i'; $myurl; if(preg_match($munprel,$this->url,$arr)){ $temp = substr($arr[0],1,strlen($arr[0])-2); $mymunber = explode(',',$temp); $temparr = explode($arr[0],$this->url); for($i=$mymunber[0];$i<=$mymunber[1];$i++){ $myurl[] = $temparr[0].$i.$temparr[1]; } }else{ $myurl = $this->url; } return $myurl; } //文件保存 protected function savafile($imgurl){ if(!empty($imgurl)){ foreach($imgurl[0] as $key=>$value){ $filename = ''; if(in_array($imgurl[1][$key],$this->style)){ $size = @getimagesize($value); if($size === false){ continue; } list($w,$h,$t,$a) = $size; if($w<200 || $h<200){ continue; } ob_start(); readfile($value); $obj = ob_get_contents(); ob_end_clean(); $dir = 'F:/php/'; if(!is_dir($dir)){ mkdir($dir,0777); } if(!empty($this->prefix)){ $filename = $dir.$this->prefix.date('Ymd').rand(10000,99999).'.'.$imgurl[1][$key]; }else{ $filename = $dir.date('Ymd').rand(10000,99999).'.'.$imgurl[1][$key]; } $fo = @fopen($filename,'wb'); if($fo === false){ echo '<script>alert("創建文件失敗,文件目錄不可寫!")</script>'; exit; } $fw = fwrite($fo,$obj); echo '<div style="width:350px;background:#ddd;">'.$filename.'采集成功</div>'; } } } } //地址采集函數,包括圖片后綴名 protected function collecturl($url){ set_time_limit(0); if(is_array($url)){ $arr = array(); $imgkey = array(); foreach($url as $value){ $code = file_get_contents($value); preg_match_all(self::prel,$code,$arrimg); $arr = array_merge($arr,$arrimg[0]); $imgkey = array_merge($imgkey,$arrimg[1]); } return array($arr,$imgkey); }else{ $code = file_get_contents($url); preg_match_all(self::prel,$code,$arrimg); return $arrimg; } } //檢驗數據 private function checkdata($url,$prefix,$style){ if(empty($url)){ return 1; }elseif(!is_array($style)){ return 2; }elseif(count($style)==0){ return 3; }elseif(stripos($prefix,'.') !== false || stripos($prefix,'/') !== false || stripos($prefix,'|') !== false){ return 4; } } }
本文由用戶 suxiang. 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!