コードは私のブログから引用しています。
http://www.taoniwu.com/archives/3234.html 何か良い提案がありましたら、よろしくお願いします~~~~~
- ?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>';</li>
<li> exit;</li>
<li> Break;</li>
<li> case 2:</li>
<li> 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処理
- 保護関数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 $myurl[] = $temparr[0].$i.$temparr[1];
- }
- }else{
- $myurl = $this- >url;
- }
- return $myurl;
- }
- //ファイル保存
- 保護関数 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
- 続行 ;
- }
- 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 '
'。 $filename.'コレクション成功 ';
- }
- }
- }
- }
-
- //画像サフィックス名を含むアドレス収集関数
- protected functioncollecturl($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;
- }
- }
- //チェックデータ
- プライベート関数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 || Stripeos($prefix,'/') !== false || Stripeos($prefix,' | ') !== false){
- return 4;
- }
- }
- }
-
-
-
-
-
-
-
- ?>
コードをコピー
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処理
- 保護関数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 $myurl[] = $temparr[0].$i.$temparr[1];
- }
- }else{
- $myurl = $this ->url;
- }
- return $myurl;
- }
- //ファイル保存
- 保護関数 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 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 '
'。 $filename.'コレクション成功 ';
- }
- }
- }
- }
-
- //画像サフィックス名を含むアドレス収集関数
- protected functioncollecturl($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;
- }
- }
- //チェックデータ
- プライベート関数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 || Stripeos($prefix,'/') !== false || Stripeos($prefix,' | ') !== false){
- return 4;
- }
- }
- }
-
コードをコピー
|