麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 語言 > PHP > 正文

php 獲取網頁內的圖片地址正則表達式

2024-09-04 11:47:24
字體:
來源:轉載
供稿:網友

獲取網頁中的圖片地址并保存下載我們需要采集頁面,然后再利用正則表達式獲取頁面中的圖片url,然后我們再通過相關的php函數把圖片保存到指定本地硬盤了.

1.獲取地址

這個功能最主要的就是用正則表達式來匹配頁面源碼里的圖片地址了,這里用到得正則表達式是:

/<img.*src="(.*)"/s*.*>/iU

首先通過PHP自帶的讀取文件函數來獲得請求頁面的html代碼,然后用正則表達式來匹配里面的src地址,這里有兩個注意點:

file_get_content

只能獲取到靜態的頁面內容,也就是說如果你在頁面里看到的是圖片是通過Javascript來展示的,通過這個工具是獲取不到圖片信息的.

有的網站對file_get_content 這個函數做了些限制,如果不是通過瀏覽器打開的網頁,服務器是拒絕請求的,這個時候我們就需要給php 程序添加一個配置信息,讓采集的程序能夠模擬一個留言器的UA(user agent),具體的做法可以通過下面的代碼來實現://現在模擬的是一個Window 環境下的瀏覽器

ini_set('user_agent','Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; 4399Box.560; .NET4.0C; .NET4.0E)');

通過以上兩點的處理,獲取網頁源碼就沒有問題了,唯一要做的就是用正則表達式對圖片地址的匹配.

例子1,代碼如下:

  1. /** 
  2.  * 獲取替換文章中的圖片路徑 
  3.  * @param string $xstr 內容 采集網頁的content 
  4.  * @param string $keyword 創建照片的文件名 我寫upimg 
  5.  * @param string $oriweb 網址 一般寫null 
  6.  * @return string 
  7.  *  
  8.  */ 
  9. function replaceimg($xstr,$keyword$oriweb){  
  10.  $basedir = dirname(__FILE__); 
  11.  
  12.     //保存路徑 
  13.     $d = date('Ym', time()); 
  14.     $dirslsitss = $basedir.'/../uploads/'.$keyword.'/'.$d;//分類是否存在 
  15.     if(!is_dir($dirslsitss)) { 
  16.         @mkdir($dirslsitss, 0777); 
  17.     } 
  18.  
  19.     //匹配圖片的src 
  20.     preg_match_all('#<img.*?src="([^"]*)"[^>]*>#i'$xstr$match); 
  21.  
  22.     foreach($match[1] as $imgurl){ 
  23.  
  24.         $imgurl = $imgurl
  25.  
  26.         if(is_int(strpos($imgurl'http'))){ 
  27.             $arcurl = $imgurl
  28.         } else { 
  29.             $arcurl = $oriweb.$imgurl;         
  30.         } 
  31.         $img=file_get_contents($arcurl); 
  32.  
  33.  
  34.         if(!emptyempty($img)) { 
  35.  
  36.             //保存圖片到服務器 
  37.             $fileimgname = time()."-".rand(1000,9999).".jpg"
  38.             $filecachs=$dirslsitss."/".$fileimgname
  39.             $fanhuistr = file_put_contents$filecachs$img ); 
  40.             $saveimgfile = "/uploads/$keyword"."/".$d."/".$fileimgname
  41.  
  42.  
  43.             $xstr=str_replace($imgurl,$saveimgfile,$xstr); 
  44.         } 
  45.     } 
  46.     return $xstr

可能有些朋友也知道file_get_contents性能不怎么樣,我們可使用curl來獲取,代碼如下:

  1. /* 
  2. *功能:php完美實現下載遠程圖片保存到本地 
  3. *參數:文件url,保存文件目錄,保存文件名稱,使用的下載方式 
  4. *當保存文件名稱為空時則使用遠程文件原來的名稱 
  5. */ 
  6. function getImage($url,$save_dir='',$filename='',$type=0){ 
  7.     if(trim($url)==''){ 
  8.   return array('file_name'=>'','save_path'=>'','error'=>1); 
  9.  } 
  10.  if(trim($save_dir)==''){ 
  11.   $save_dir='./'
  12.  } 
  13.     if(trim($filename)==''){//保存文件名 
  14.         $ext=strrchr($url,'.'); 
  15.         if($ext!='.gif'&&$ext!='.jpg'){ 
  16.    return array('file_name'=>'','save_path'=>'','error'=>3); 
  17.   } 
  18.         $filename=time().$ext
  19.     } 
  20.  if(0!==strrpos($save_dir,'/')){ 
  21.   $save_dir.='/'
  22.  } 
  23.  //創建保存目錄 
  24.  if(!file_exists($save_dir)&&!mkdir($save_dir,0777,true)){ 
  25.   return array('file_name'=>'','save_path'=>'','error'=>5); 
  26.  } 
  27.     //獲取遠程文件所采用的方法  
  28.     if($type){ 
  29.   $ch=curl_init(); 
  30.   $timeout=5; 
  31.   curl_setopt($ch,CURLOPT_URL,$url); 
  32.   curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); 
  33.   curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout); 
  34.   $img=curl_exec($ch); 
  35.   curl_close($ch); 
  36.     }else
  37.      ob_start();  
  38.      readfile($url); 
  39.      $img=ob_get_contents();  
  40.      ob_end_clean();  
  41.     } 
  42.     //$size=strlen($img); 
  43.     //文件大小  
  44.     $fp2=@fopen($save_dir.$filename,'a'); 
  45.     fwrite($fp2,$img); 
  46.     fclose($fp2); 
  47.  unset($img,$url); 
  48.     return array('file_name'=>$filename,'save_path'=>$save_dir.$filename,'error'=>0); 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 日韩一级片毛片 | 国产精品av久久久久久无 | 羞羞视频在线免费 | 国毛片| 精品偷拍久久 | 国产精品九九久久一区hh | 欧美日韩中文字幕在线视频 | 在线成人免费观看www | 成人福利视频网站 | 国产人成免费爽爽爽视频 | 日美av在线| 亚洲精品一区二区三区在线看 | wwwxxx免费视频 | 国产精品久久久久一区二区 | 国产精品免费大片 | 国产一国产一级毛片视频在线 | 九九久久视频 | 中文字幕一二三区芒果 | 久草在线高清 | 国产精品片一区二区三区 | 色综合激情 | 成年免费视频黄网站在线观看 | 女女久久| 欧美精品亚洲人成在线观看 | 99亚洲精品 | 国产成人av免费看 | 成人国产精品一区 | 久久亚洲国产精品 | 国产亚洲区 | 激情综合婷婷久久 | 国产精品久久久久久久久久iiiii | 国产成人高潮免费观看精品 | 销魂美女一区二区 | 一级黄色在线免费观看 | 久久久久久久久成人 | 久久久久久片 | 天天舔夜夜操 | arabxxxxvideos| 黑人日比视频 | 亚洲精品动漫在线观看 | 欧美视频一二区 |