getFile(「http://pic4.nipic.com/20091217/3885730_124701000519_2.jpg」,」,’xuxin’);
/**
* php實現下載遠程圖片保存到本地
**
* $url 圖片所在地址
* $path 保存圖片的路徑
* $filename 圖片自定義命名
* $type 使用什麼方式下載
* 0:curl方式,1:readfile方式,2file_get_contents方式
*
* return 文件名
*/
function getFile($url,$path=」,$filename=」,$type=0){
if($url==」){
return false;
}
//獲取遠程文件數據
if($type===0){
$ch=curl_init(); //初始化一個cURL會話
$timeout=20;
curl_setopt($ch,CURLOPT_URL,$url); //取回的URL地址
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); //若是成功只將結果返回,不自動輸出任何內容。
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);//最長執行時間
curl_setopt($ch,CURLOPT_TIMEOUT,$timeout);//最長等待時間php
$img=curl_exec($ch); //獲取的信息以文件流的形式返回
curl_close($ch);
}
if($type===1){
ob_start(); //打開緩衝區
readfile($url); //輸出一個文件。
$img=ob_get_contents(); //獲得緩衝區的數據
ob_end_clean(); //終止緩衝
}
if($type===2){
$img=file_get_contents($url); //把整個文件讀入一個字符串中
}
//判斷下載的數據 是否爲空 下載超時問題
if(empty($img)){
throw new \Exception(「下載錯誤,沒法獲取下載文件!」);
}html
//沒有指定路徑則默認當前路徑
if($path===」){
$path=」./」;
}
//若是命名爲空
if($filename===」」){
$filename=md5($img);
}
//獲取後綴名
$ext=substr($url, strrpos($url, ‘.’)); //查找字符串在另外一字符串中最後一次出現的位置
if($ext && strlen($ext)<5){ $filename.=$ext; } //防止"/"沒有添加 $path=rtrim($path,"/")."/"; //var_dump($path.$filename);die(); $fp2=@fopen($path.$filename,'a'); //寫入方式打開文件 fwrite($fp2,$img); //數據寫入 fclose($fp2); //關閉 //echo "finish"; return $filename; 正則匹配html標籤的內容 案例 $regex4="/curl
.*?<\/p>/ism」;
if(preg_match_all($regex4, $return, $matches)){
var_dump($matches[0]);
}
默認安裝使用的curl是不支持https協議的須要在代碼塊裏面添加一下兩端代碼用來支持https協議
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false );
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false );ide