php正则取网页代码中的img图片,下载图片到本地,方便小巧实用!
<?php
set_time_limit(0);
$srt='<br tangram-key="module-split" style="display: none;"><table border="0" bordercolor="#cccccc" cellspacing="0" height="31" width="682"><tbody><tr><td height="31" width="105"><img data-ks-lazyloaded="true" src="http://img01.taobaocdn.com/imgextra/i1/676649324/T2cul3XoNcXXXXXXXX_!!676649324.jpg" height="39" width="104"></td><td height="31" width="565"><font face="simhei" size="5"><span style="line-height: 36.0px;"></span></font><br><br><span style="color: #ff0000;"></span></td></tr></tbody></table><table border="0" cellpadding="0" cellspacing="0" width="750"><tbody><tr><td><img data-ks-lazyloaded="true" src="http://img01.taobaocdn.com/imgextra/i1/1037043605/T2j58lXaxOXXXXXXXX_!!1037043605.jpg" height="556" width="750"></td></tr></tbody></table><table border="0" cellpadding="0" cellspacing="0" width="750"><tbody><tr></tr><tr><td height="664"><img data-ks-lazyloaded="true" src="http://img01.taobaocdn.com/imgextra/i1/1037043605/T2jSyfXexcXXXXXXXX_!!1037043605.jpg" height="664" width="750"></td></tr><tr><td height="916"><img data-ks-lazyloaded="true" src="http://img02.taobaocdn.com/imgextra/i2/676649324/T2Ly1gXbpcXXXXXXXX_!!676649324.jpg" height="916" width="750"></td></tr><tr><td height="742"><img data-ks-lazyloaded="true" src="http://img01.taobaocdn.com/imgextra/i1/676649324/T2e.pRXo4dXXXXXXXX_!!676649324.jpg" height="742" width="750"></td></tr><tr><td height="724"><img data-ks-lazyloaded="true" src="http://img03.taobaocdn.com/imgextra/i3/676649324/T28kC1XnlXXXXXXXXX_!!676649324.jpg" height="724" width="750"></td></tr><tr><td height="789"><img data-ks-lazyloaded="true" src="http://img03.taobaocdn.com/imgextra/i3/676649324/T2gXu0XnRaXXXXXXXX_!!676649324.jpg" height="789" width="750"></td></tr><tr><td height="834"><img data-ks-lazyloaded="true" src="http://img02.taobaocdn.com/imgextra/i2/676649324/T2aq11XgXaXXXXXXXX_!!676649324.jpg" height="834" width="750"></td></tr><tr><td height="1020"><img src="http://l.tbcdn.cn/kissy/1.0.0/build/imglazyload/spaceball.gif" data-ks-lazyload="http://img02.taobaocdn.com/imgextra/i2/676649324/T21OF_XgNcXXXXXXXX_!!676649324.jpg" height="1020" width="750"></td></tr><tr><td height="815"><img src="http://l.tbcdn.cn/kissy/1.0.0/build/imglazyload/spaceball.gif" data-ks-lazyload="http://img02.taobaocdn.com/imgextra/i2/676649324/T2Hbq1XilXXXXXXXXX_!!676649324.jpg" height="816" width="750"></td></tr><tr><td height="320"><img src="http://l.tbcdn.cn/kissy/1.0.0/build/imglazyload/spaceball.gif" data-ks-lazyload="http://img03.taobaocdn.com/imgextra/i3/676649324/T2I651XoxXXXXXXXXX_!!676649324.jpg" height="320" width="750"></td></tr><tr><td><img src="http://l.tbcdn.cn/kissy/1.0.0/build/imglazyload/spaceball.gif" data-ks-lazyload="http://img03.taobaocdn.com/imgextra/i3/676649324/T2yB4hXcBOXXXXXXXX_!!676649324.jpg"><br><a href="http://www.taobao.com/webww/ww.php?spm=a220o.1000855.0.119.ADw66M&ver=3&touid=%E6%A2%B5%E5%B8%8C%E8%94%93%E5%85%B0%E5%86%A0%E4%B8%93%E5%8D%96%E5%BA%97&siteid=cntaobao&status=1&charset=utf-8" target="_blank"><img src="http://l.tbcdn.cn/kissy/1.0.0/build/imglazyload/spaceball.gif" data-ks-lazyload="http://img02.taobaocdn.com/imgextra/i2/676649324/T2iEKnXadcXXXXXXXX_!!676649324.jpg" border="0"></a><br><img src="http://l.tbcdn.cn/kissy/1.0.0/build/imglazyload/spaceball.gif" data-ks-lazyload="http://img04.taobaocdn.com/imgextra/i4/676649324/T2joG8XiJaXXXXXXXX_!!676649324.gif"><br><img src="http://l.tbcdn.cn/kissy/1.0.0/build/imglazyload/spaceball.gif" data-ks-lazyload="http://img03.taobaocdn.com/imgextra/i3/676649324/T2LTy8XfFaXXXXXXXX_!!676649324.jpg"><br><img src="http://l.tbcdn.cn/kissy/1.0.0/build/imglazyload/spaceball.gif" data-ks-lazyload="http://img02.taobaocdn.com/imgextra/i2/676649324/T2u_m9XclXXXXXXXXX_!!676649324.jpg"></td></tr><tr><td height="1028"><img src="http://l.tbcdn.cn/kissy/1.0.0/build/imglazyload/spaceball.gif" data-ks-lazyload="http://img04.taobaocdn.com/imgextra/i4/676649324/T24eWGXmpbXXXXXXXX_!!676649324.jpg" height="1028" width="750"></td></tr><tr><td height="0"> </td></tr><tr><td height="821"><a href="http://detail.tmall.com/item.htm?spm=a220o.1000855.17.31.a2b9c5&id=15662490028&" target="_blank"><img src="http://l.tbcdn.cn/kissy/1.0.0/build/imglazyload/spaceball.gif" data-ks-lazyload="http://img01.taobaocdn.com/imgextra/i1/1037043605/T2w.X.XhXcXXXXXXXX_!!1037043605.jpg" border="0" height="821" width="750"></a></td></tr><tr><td height="0"><a href="http://detail.taobao.com/meal_detail.htm?spm=0.0.0.3.WnWbAk&meal_id=24054196&seller_id=676649324" target="_blank"><img src="http://l.tbcdn.cn/kissy/1.0.0/build/imglazyload/spaceball.gif" data-ks-lazyload="http://img01.taobaocdn.com/imgextra/i1/676649324/T2gGSqXa8cXXXXXXXX_!!676649324.jpg" border="0" height="456" width="750"></a></td></tr><tr><td height="0"><img src="http://l.tbcdn.cn/kissy/1.0.0/build/imglazyload/spaceball.gif" data-ks-lazyload="http://img03.taobaocdn.com/imgextra/i3/676649324/T2Dbp.XdVbXXXXXXXX_!!676649324.jpg"></td></tr><tr><td height="0"><img src="http://l.tbcdn.cn/kissy/1.0.0/build/imglazyload/spaceball.gif" data-ks-lazyload="http://img02.taobaocdn.com/imgextra/i2/676649324/T2vnJ8XjRcXXXXXXXX_!!676649324.jpg" height="827" width="750"></td></tr><tr><td height="1028"><img src="http://l.tbcdn.cn/kissy/1.0.0/build/imglazyload/spaceball.gif" data-ks-lazyload="http://img02.taobaocdn.com/imgextra/i2/676649324/T2Sfy1XfhaXXXXXXXX_!!676649324.jpg" height="1028" width="750"></td></tr><tr><td height="3562"><img src="http://l.tbcdn.cn/kissy/1.0.0/build/imglazyload/spaceball.gif" data-ks-lazyload="http://img04.taobaocdn.com/imgextra/i4/676649324/T2XXG2Xd0XXXXXXXXX_!!676649324.jpg" height="3562" width="750"></td></tr><tr><td height="3600"><img src="http://l.tbcdn.cn/kissy/1.0.0/build/imglazyload/spaceball.gif" data-ks-lazyload="http://img03.taobaocdn.com/imgextra/i3/676649324/T2QVa1XgVaXXXXXXXX_!!676649324.jpg" height="3600" width="750"></td></tr><tr><td height="3492"><img src="http://l.tbcdn.cn/kissy/1.0.0/build/imglazyload/spaceball.gif" data-ks-lazyload="http://img04.taobaocdn.com/imgextra/i4/676649324/T2vUm1XihXXXXXXXXX_!!676649324.jpg" height="3492" width="750"></td></tr><tr><td height="2400"><img src="http://l.tbcdn.cn/kissy/1.0.0/build/imglazyload/spaceball.gif" data-ks-lazyload="http://img04.taobaocdn.com/imgextra/i4/676649324/T24GXVXihdXXXXXXXX_!!676649324.jpg" height="2400" width="750"></td></tr><tr><td height="1399"><img src="http://l.tbcdn.cn/kissy/1.0.0/build/imglazyload/spaceball.gif" data-ks-lazyload="http://img02.taobaocdn.com/imgextra/i2/676649324/T2ZLBLXh0eXXXXXXXX_!!676649324.jpg" height="1399" width="750"></td></tr><tr><td height="3458"><img src="http://l.tbcdn.cn/kissy/1.0.0/build/imglazyload/spaceball.gif" data-ks-lazyload="http://img01.taobaocdn.com/imgextra/i1/676649324/T2lZOCXbxcXXXXXXXX_!!676649324.jpg" height="3458" width="750"></td></tr></tbody></table><p><img src="http://l.tbcdn.cn/kissy/1.0.0/build/imglazyload/spaceball.gif" data-ks-lazyload="http://img03.taobaocdn.com/imgextra/i3/676649324/T2C6NEXhhNXXXXXXXX_!!676649324.gif" height="224" width="750"></p>';
$str2="";
$zz="/data-ks-lazyload="(.*)jpg"/i";
//preg_match_all("/<img.*?data-ks-lazyloaded="true".*?src="(.*?)".*?height=(.*)"></td>/i",$srt,$a);
//preg_match_all("/<img.*?(.*)>/i",$srt,$a);
//preg_match_all("/<img.*?data-ks-lazyloaded="true".*?src="(.*?.jpg)"/i",$srt,$a);
preg_match_all("/<img.*?(http://img.*?.jpg)"/i",$srt,$a);
//$a=str_repleace('http://l.tbcdn.cn/kissy/1.0.0/build/imglazyload/spaceball.gif" data-ks-lazyload="',"",$a);
//print_r($a);
//echo $a[1];
$filepath="/test/getimg/d";
$num=count($a[1]);
echo $num;
$dir="d";
foreach ($a[1] as $key=>$value){
echo $value."<br/><br/><br/>";
//for($i=1;$i<=56;$i++){
$i=$key+1;
if($i<10){
$u=$value;
copy($u,"$dir/taobao0$i.jpg");
}else{
$u=$value;
copy($u,"$dir/taobao$i.jpg");
}
//echo '<img src="'.$value.'">';
//grabImage($value);
//file_put_contents(basename($value), file_get_contents($value));
//downloadImage($value, $filepath);
/*preg_match_all("/<img.*?src=['| "](.*?(?:[.gif|.jpg]))['|"].*?[/]?>/",$value,$getPicPath);
foreach ($$getPicPath[1] as $key=>$value){
echo $value."<br/>22<br/>22<br/>";
}*/
}
/*preg_match_all("/<img.*?src=['| "](.*?(?:[.gif|.jpg]))['|"].*?[/]?>/",$srt,$getPicPath);
*/
//print_r($getPicPath);
function grabImage($url, $filename = '') {
if($url == '') {
return false; //如果 $url 为空则返回 false;
}
$ext_name = strrchr($url, '.'); //获取图片的扩展名
if($ext_name != '.gif' && $ext_name != '.jpg' && $ext_name != '.bmp' && $ext_name != '.png') {
return false; //格式不在允许的范围
}
if($filename == '') {
$filename = time().$ext_name; //以时间戳另起名
}
//开始捕获
ob_start();
readfile($url);
$img_data = ob_get_contents();
ob_end_clean();
$size = strlen($img_data);
$local_file = fopen($filename , 'a');
fwrite($local_file, $img_data);
fclose($local_file);
return $filename;
}
/**
* 下载远程图片
* @param string $url 图片的绝对url
* @param string $filepath 文件的完整路径(包括目录,不包括后缀名,例如/www/images/test) ,此函数会自动根据图片url和http头信息确定图片的后缀名
* @return mixed 下载成功返回一个描述图片信息的数组,下载失败则返回false
*/
function downloadImage($url, $filepath) {
//服务器返回的头信息
$responseHeaders = array();
//原始图片名
$originalfilename = '';
//图片的后缀名
$ext = '';
$ch = curl_init($url);
//设置curl_exec返回的值包含Http头
curl_setopt($ch, CURLOPT_HEADER, 1);
//设置curl_exec返回的值包含Http内容
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//设置抓取跳转(http 301,302)后的页面
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
//设置最多的HTTP重定向的数量
curl_setopt($ch, CURLOPT_MAXREDIRS, 2);
//服务器返回的数据(包括http头信息和内容)
$html = curl_exec($ch);
//获取此次抓取的相关信息
$httpinfo = curl_getinfo($ch);
curl_close($ch);
if ($html !== false) {
//分离response的header和body,由于服务器可能使用了302跳转,所以此处需要将字符串分离为 2+跳转次数 个子串
$httpArr = explode("rnrn", $html, 2 + $httpinfo['redirect_count']);
//倒数第二段是服务器最后一次response的http头
$header = $httpArr[count($httpArr) - 2];
//倒数第一段是服务器最后一次response的内容
$body = $httpArr[count($httpArr) - 1];
$header.="rn";
//获取最后一次response的header信息
preg_match_all('/([a-z0-9-_]+):s*([^rn]+)rn/i', $header, $matches);
if (!empty($matches) && count($matches) == 3 && !empty($matches[1]) && !empty($matches[1])) {
for ($i = 0; $i < count($matches[1]); $i++) {
if (array_key_exists($i, $matches[2])) {
$responseHeaders[$matches[1][$i]] = $matches[2][$i];
}
}
}
//获取图片后缀名
if (0 < preg_match('{(?:[^/\]+).(jpg|jpeg|gif|png|bmp)$}i', $url, $matches)) {
$originalfilename = $matches[0];
$ext = $matches[1];
} else {
if (array_key_exists('Content-Type', $responseHeaders)) {
if (0 < preg_match('{image/(w+)}i', $responseHeaders['Content-Type'], $extmatches)) {
$ext = $extmatches[1];
}
}
}
//保存文件
if (!empty($ext)) {
$filepath .= ".$ext";
//如果目录不存在,则先要创建目录
CFiles::createDirectory(dirname($filepath));
$local_file = fopen($filepath, 'w');
if (false !== $local_file) {
if (false !== fwrite($local_file, $body)) {
fclose($local_file);
$sizeinfo = getimagesize($filepath);
return array('filepath' => realpath($filepath), 'width' => $sizeinfo[0], 'height' => $sizeinfo[1], 'orginalfilename' => $originalfilename, 'filename' => pathinfo($filepath, PATHINFO_BASENAME));
}
}
}
}
return false;
}
?>
评论