Css图片批量下载小工具--saveimg1.5
備用下載地址:http://download.csdn.net/detail/zhoumengkang/4949519
 
1.5只是將代碼進行有一些自以為是的優化,實際說應該是表面上的代碼量減少了,但不知道效率是不是真的提高了,當然所有我的困惑我都會做好筆記,一一消化的!
通過不斷的實際測試,我也明白了為什么別人開發軟件的時候總要修復BUG,為什么要升級了。
這段時間,收獲真的不少,不僅是以前學的一些知識的整合、鞏固,也發現了以前覺得非常不起眼的小知識點的重要性。
經常會有“哦,原來這個東西還有作用啊!(竊喜)真是太好了,這不正是我需要的嗎?”;
這段時間,心里想的只有一件事,那就是怎么樣做才能使得代碼更加高效更加簡潔。
刷牙、做夢、走路總會在無意識間就會對某個小細節想到了一種新的處理方式,或許是代碼少了1行,或許是換了一種新方法,或許是提交給下個函數的時候少了一個參數。
我都會迫不及待的打開電腦來測試,即使這然一切在別人看來是純農民工純低級的工作!
2012.12.13
1.也不知道算不算代碼優化,不知道速度上有沒有提升
-----------------------------------
mkdir_for_img.php 原代碼:
-----------------------------------
function mkdirforimg($img){$protocol='/http:\/\//';$replace='web/';$img['url']=preg_replace($protocol,$replace,$img['url']);for($i=1;$i<$img['num'];$i++){$url[$i]=$img['url'][$i];//拿出每張圖片的地址 $y[$i]=explode('/',$url[$i]);//把保存的目錄的保存到數組中去foreach($y[$i] as $key =>$value2);//獲取目錄的深度for($n=0;$n<$key;$n++){//循環的時候除去數組的最后一位(最后一位為圖片,不是文件夾)$path.=$y[$i][$n].'/';if(!file_exists($path)){if(mkdir($path,0777,true)){echo $path.'<font color="green">路徑創建成功</font><br/>';};}}$path=null;//清空$path} }----------------------------------- mkdir_for_img.php 新代碼:
-----------------------------------
代碼簡化地方,使用foreach直接遍歷整個數組,省略了上一個版本中對數組元素個數的依賴性
也許foreach的內部代碼先對foreach進行了出棧做while判斷,然后確定其元素個數,再使用for循環;
倘若是那樣,那么我的代碼優化,速度上反而使得腳本速度更加慢了。
function mkdirforimg($img){$protocol='/http:\/\//';$replace='web/';$img=preg_replace($protocol,$replace,$img);foreach($img as $k=>$v){$a=dirname($v);if(!file_exists($a)){if(mkdir($a,0777,true)){echo $a.'<font color="green">路徑創建成功</font><br/>';};}} }
-----------------------------------
get_img_url.php 原代碼:
-----------------------------------
function getimgurl($filename,$baseurl){$file=fopen($filename,'r');while(!feof($file)){$content.=fread($file,1024);}echo '<pre>';//將整個css文件以字符串保存,然后以“url(”作為標記切割成數組$arr=explode('url(',$content);//獲取該數組的個數,即整個css文件使用到url圖片的個數(有可能有部分圖片重復,后面保存的時候再判斷排除)foreach($arr as $key =>$value);$img['num']=$key+1;for($i=1;$i<$img['num'];$i++){//取出上面數組中的每個元素$x=$arr[$i];//截取反括號前面的內容,即為圖片地址$y=explode(')',$x);//測試發現部分網站的css的url標簽中使用了""和'',要考慮到所有網站的情況,所以得刪除兩段的引號$z[$i]=trim($y[0],'"');$z[$i]=trim($z[$i],"'");//再清除圖片地址后面跟的參數,圖片后面為什么跟參數,不明白,但是例如phpwind的圖片就經常有?后面跟一些日期$param='/\?/';$res=preg_match($param,$z[$i],$match);if($res==1){$change=explode('?',$z[$i]);$z[$i]=$change[0];}#######下面需要考慮圖片地址在url的引用方法############ 1 images/xxx.jpg ###################### 2 ./images/xxx.jpg ###################### 3 ../images/xxx.jpg ###################### 4 /images/xxx.jpg ###################### 5 http://.xxx.jpg ###############$check=preg_match('/^http/',$z[$i]);if($check==1){//直接保存圖片地址$img['url']=$z[$i];}else{$check2=preg_match('/^\//',$z[$i]);if($check2==1){$z[$i]=$baseurl[1].$z[$i];//是第4種情況,直接與域名拼接}else{$z[$i]=$baseurl[0].'/'.$z[$i];//與css所在文件地址拼接}}}$a=array_unique($z);$img['url']=$a;$n=0;$b=array();foreach($a as $v){$n++;array_push($b,$n);}$img['num']=$n+1;$img['url']=array_combine($b,$a);print_r($img['url']);return $img; }-----------------------------------
get_img_url.php 新代碼:
-----------------------------------
function getimgurl($filename,$baseurl){$file=fopen($filename,'r');while(!feof($file)){$content.=fread($file,1024);}echo '<pre>';$arr=explode('url(',$content);foreach($arr as $k => &$v){$a=explode(')',$v);$v=trim($a[0],'"');$v=trim($v,"'");$param='/\?/';$res=preg_match($param,$v,$match);if($res==1){$change=explode('?',$v);$v=$change[0];}$check=preg_match('/^http/',$v);if($check==1){//直接保存圖片地址continue;}else{$check2=preg_match('/^\//',$v);if($check2==1){$v=$baseurl[1].$v;//是第4種情況,直接與域名拼接}else{$v=$baseurl[0].'/'.$v;//與css所在文件地址拼接}}}array_shift($arr);$img=array_unique($arr);print_r($img);return $img; }-----------------------------------
saveimg.php 原代碼:
-----------------------------------
function saveimg($img){$protocol='/http:\/\//';$replace='web/';$filename=preg_replace($protocol,$replace,$img['url']); //圖片保存路徑for($i=1;$i<$img['num'];$i++){$b=file_get_contents($img['url'][$i]);$c=file_put_contents($filename[$i],$b);if($c!==0){echo $filename[$i].'<font color="green">下載成功</font><br/>';}else{echo $filename[$i].'<font color="red">下載失敗</font><br/>';}} }-----------------------------------
saveimg.php 新代碼:
-----------------------------------
function saveimg($img){$protocol='/http:\/\//';$replace='web/';$filename=preg_replace($protocol,$replace,$img); //圖片保存路徑foreach($img as $i=>$v){$b=file_get_contents($v);$c=file_put_contents($filename[$i],$b);if($c!==0){echo $filename[$i].'<font color="green">下載成功</font><br/>';}else{echo $filename[$i].'<font color="red">下載失敗</font><br/>';}} }
 
總結
以上是生活随笔為你收集整理的Css图片批量下载小工具--saveimg1.5的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: Vue学习之页面起始页设置
 - 下一篇: webgis技术在智慧城市综合治理(9+