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; } ?>
评论