首頁 後端開發 php教程 抓取並下載CSS中所有圖片檔案的php程式碼

抓取並下載CSS中所有圖片檔案的php程式碼

Nov 30, 2016 pm 01:39 PM
css

這篇文章的亮點是,正則式更加複雜鳥,?(-_-)?,再就是 Copy 函數的灰常強大的一個用法。 
> 話說剛才聽 NsYta 說小邪的主題太白了,杯具。最近太忙,沒空,不然就自己搞新主題。

一. 抓取CSS 中的圖片: 
> 1. 先準備好工作: 
> 第一步,先把CSS 原本的路徑存到$url 變數裡,然後把CSS 的內容保存在abc.css中。 
> 因為考慮到經常碰到多個 CSS 檔案的狀況,所以小邪沒有直接填一個 CSS 路徑。 
> 而是把幾個 CSS 檔案的內容合併在一起,全部塞到 abc.css 檔案裡面即可,嘎嘎嘎。 

$data = file_get_contents('abc.css'); 

> 接著讀取 CSS 檔案的內容到 $data 變數中,然後用正規式把網域給取出。 
> 因為這裡考慮到許多圖片檔案用到了相對根路徑,比方說 /img/1.gif 和 img/1.gif。 
> 然後 CSS 原始位址在 http://www.bitsCN.com/css/ 那麼上面的兩個檔案位置是不同的。 

> 第一個檔案在 /upload/201109/20110926143903807.gif,因為它的路徑用到了相對根路徑。 
> 而第二個在 /upload/201109/20110926143903169.gif,它的路徑只是普通的相對路徑。
複製代碼 代碼如下: 
$url = 'http://www.bitsCN.com/css/'; preg_match('/(.*//.*?)//',$url,$host); 
//這裡用正規式把http://www.bitsCN.com/ 取出來,後端不要忘記加斜線喔。 
//.*? 是懶惰匹配,也就是能匹配得越少就匹配越少的內容,這樣就不會取過頭了。 
$host = $host[1]; 

2. 把圖片儲存資料夾建好: 
> 小邪這裡用了 is_dir 來確定資料夾是否存在,存在的話,就不用再建立第二遍了。 
> 呵呵,順便說下,is_file 函數可以判斷此文件是否為正常文件,也可以確定是否存在。 
> 但 file_exists() 好一點,因為某次看到有人在 Webmasterworld.com 上面討論過。

if (!is_dir('img')) { mkdir('img'); } 

> 3. 用正則式取出圖片: 

$regex = '/url('{0,1 }"{0,1}(.*?)'{0,1}"{0,1})/'; 
//這裡用正規式配對出圖片位址,要考慮三種情況,即url(1 .gif) url('1.gif') url("1.gif")。 
//這三種寫法都是可以使用的,所以咱們就用上面的正則把裡面的 1.gif 取出來。
//'{0,1} 表示單引號可能出現1次或0次," 則表示雙引號可能出現1次或0次。 
//中間必須使用懶惰匹配,不然取出來的就是1.gif " 而非1.gif 鳥,O(∩_∩)P。 
preg_match_all($regex,$data,$result); 

> 4. 處理這些圖片: 

> 先使用一個循環,上面是用正規提取的第一個分支內容數組來處理一下。 
> 額,這裡的第一個分支表示正規式裡面的第一個括號來著,呵呵,以此類推。 

foreach ($result[1] as $val) { } 

> 然後是用正規式判定,因為也要考慮到這樣 /upload/201109/20110926143903807.gif。 
> 這樣是使用了完整的路徑了,而不是想其他的一樣是 /img/1.gif 或 img/1.gif。 
> 所以單獨判斷一下,然後接著判斷這兩個,看看是 /img/1.gif 還是 img/1.gif。
複製程式碼 程式碼如下: 
if (preg_match('/^http.*/',$val)) { $target = $val; } 
else if (preg_match('/^/.*/',$val) ) { $target=$host.$val; } 
else { $target=$url.$val; } 
echo $target."
rn"; 

> 最後把檔案名稱取出來,即/img /1.gif 中的1.gif,用於儲存檔案。
複製程式碼 程式碼如下: 
preg_match('/.*/(.*.D+)$/',$val,$name); 

> 那麼咱們就可以開始下載了,這裡要介紹一個強大的Copy 函數用法。
複製碼 程式碼如下: 
if (!is_file('./img/'.$name[1])) { 
$imgc = file_get_contents($target); 
$handle = fopen('./img/'. $name[1],'w+'); 
fwrite($handle,$imgc); 
fclose($handle); 


> 上面那個是咱們的老方法了,嘎嘎,很麻煩。某次,小邪突然發現 Copy 的強大。 
> Copy 居然也可以下載,所以可以輕鬆使用下面的程式碼來處理,上面的可以退休鳥。
複製程式碼 程式碼如下: 
if (!is_file('./img/'.$name[1])) { 
copy($target,'./img/'.$name[1]); 


> 5. 完整原始碼: 

> 使用的時候把$url 填好即可,然後把所有CSS 內容存到abc.css 中即可。
複製程式碼 程式碼如下: 
$url = 'http://www.bitsCN.com/css/'; 
$data = file_get_contents('abc.css'); 
preg_match('/(.* //.*?)//',$url,$host); 
$host = $host[1]; 
if (!is_dir('img')) { mkdir('img'); } 
$regex = '/url('{0,1}"{0,1}(.*?)'{0,1}"{0,1})/'; 
preg_match_all($regex,$data,$result) ; 
foreach ($result[1] as $val) { 
if (preg_match('/^http.*/',$val)) { $target = $val; } 
else if (preg_match('/^/ .*/',$val)) { $target=$host.$val; } 
else { $target=$url.$val; } 
echo $target."
rn"; 
preg_match(' /.*/(.*.D+)$/',$val,$name); 
if (!is_file('./img/'.$name[1])) { 
copy($target,'. /img/'.$name[1]); 

}?> 

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

vue中怎麼用bootstrap vue中怎麼用bootstrap Apr 07, 2025 pm 11:33 PM

在 Vue.js 中使用 Bootstrap 分為五個步驟:安裝 Bootstrap。在 main.js 中導入 Bootstrap。直接在模板中使用 Bootstrap 組件。可選:自定義樣式。可選:使用插件。

HTML,CSS和JavaScript的角色:核心職責 HTML,CSS和JavaScript的角色:核心職責 Apr 08, 2025 pm 07:05 PM

HTML定義網頁結構,CSS負責樣式和佈局,JavaScript賦予動態交互。三者在網頁開發中各司其職,共同構建豐富多彩的網站。

了解HTML,CSS和JavaScript:初學者指南 了解HTML,CSS和JavaScript:初學者指南 Apr 12, 2025 am 12:02 AM

WebDevelovermentReliesonHtml,CSS和JavaScript:1)HTMLStructuresContent,2)CSSStyleSIT和3)JavaScriptAddSstractivity,形成thebasisofmodernWebemodernWebExexperiences。

bootstrap怎麼設置框架 bootstrap怎麼設置框架 Apr 07, 2025 pm 03:27 PM

要設置 Bootstrap 框架,需要按照以下步驟:1. 通過 CDN 引用 Bootstrap 文件;2. 下載文件並將其託管在自己的服務器上;3. 在 HTML 中包含 Bootstrap 文件;4. 根據需要編譯 Sass/Less;5. 導入定製文件(可選)。設置完成後,即可使用 Bootstrap 的網格系統、組件和样式創建響應式網站和應用程序。

bootstrap怎麼寫分割線 bootstrap怎麼寫分割線 Apr 07, 2025 pm 03:12 PM

創建 Bootstrap 分割線有兩種方法:使用 標籤,可創建水平分割線。使用 CSS border 屬性,可創建自定義樣式的分割線。

bootstrap怎麼插入圖片 bootstrap怎麼插入圖片 Apr 07, 2025 pm 03:30 PM

在 Bootstrap 中插入圖片有以下幾種方法:直接插入圖片,使用 HTML 的 img 標籤。使用 Bootstrap 圖像組件,可以提供響應式圖片和更多樣式。設置圖片大小,使用 img-fluid 類可以使圖片自適應。設置邊框,使用 img-bordered 類。設置圓角,使用 img-rounded 類。設置陰影,使用 shadow 類。調整圖片大小和位置,使用 CSS 樣式。使用背景圖片,使用 background-image CSS 屬性。

bootstrap按鈕怎麼用 bootstrap按鈕怎麼用 Apr 07, 2025 pm 03:09 PM

如何使用 Bootstrap 按鈕?引入 Bootstrap CSS創建按鈕元素並添加 Bootstrap 按鈕類添加按鈕文本

bootstrap怎麼調整大小 bootstrap怎麼調整大小 Apr 07, 2025 pm 03:18 PM

要調整 Bootstrap 中元素大小,可以使用尺寸類,具體包括:調整寬度:.col-、.w-、.mw-調整高度:.h-、.min-h-、.max-h-

See all articles