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

這篇文章的亮點是,正則式更加複雜鳥,?(-_-)?,再就是 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
PHP如何識別用戶的會話?PHP如何識別用戶的會話?May 01, 2025 am 12:23 AM

phpIdentifiesauser'ssessionSessionSessionCookiesAndSessionId.1)whiwsession_start()被稱為,phpgeneratesainiquesesesessionIdStoredInacookInAcookInAcienamedInAcienamedphpsessIdontheuser'sbrowser'sbrowser.2)thisIdallowSphptpptpptpptpptpptpptpptoretoreteretrieetrieetrieetrieetrieetrieetreetrieetrieetrieetrieetremthafromtheserver。

確保PHP會議的一些最佳實踐是什麼?確保PHP會議的一些最佳實踐是什麼?May 01, 2025 am 12:22 AM

PHP會話的安全可以通過以下措施實現:1.使用session_regenerate_id()在用戶登錄或重要操作時重新生成會話ID。 2.通過HTTPS協議加密傳輸會話ID。 3.使用session_save_path()指定安全目錄存儲會話數據,並正確設置權限。

PHP會話文件默認存儲在哪裡?PHP會話文件默認存儲在哪裡?May 01, 2025 am 12:15 AM

phpsessionFilesArestoredIntheDirectorySpecifiedBysession.save_path,通常是/tmponunix-likesystemsorc:\ windows \ windows \ temponwindows.tocustomizethis:tocustomizEthis:1)useession_save_save_save_path_path()

您如何從PHP會話中檢索數據?您如何從PHP會話中檢索數據?May 01, 2025 am 12:11 AM

ToretrievedatafromaPHPsession,startthesessionwithsession_start()andaccessvariablesinthe$_SESSIONarray.Forexample:1)Startthesession:session_start().2)Retrievedata:$username=$_SESSION['username'];echo"Welcome,".$username;.Sessionsareserver-si

您如何使用會議來實施購物車?您如何使用會議來實施購物車?May 01, 2025 am 12:10 AM

利用會話構建高效購物車系統的步驟包括:1)理解會話的定義與作用,會話是服務器端的存儲機制,用於跨請求維護用戶狀態;2)實現基本的會話管理,如添加商品到購物車;3)擴展到高級用法,支持商品數量管理和刪除;4)優化性能和安全性,通過持久化會話數據和使用安全的會話標識符。

您如何在PHP中創建和使用接口?您如何在PHP中創建和使用接口?Apr 30, 2025 pm 03:40 PM

本文解釋瞭如何創建,實施和使用PHP中的接口,重點關注其對代碼組織和可維護性的好處。

crypt()和password_hash()有什麼區別?crypt()和password_hash()有什麼區別?Apr 30, 2025 pm 03:39 PM

本文討論了PHP中的crypt()和password_hash()的差異,以進行密碼哈希,重點介紹其實施,安全性和對現代Web應用程序的適用性。

如何防止PHP中的跨站點腳本(XSS)?如何防止PHP中的跨站點腳本(XSS)?Apr 30, 2025 pm 03:38 PM

文章討論了通過輸入驗證,輸出編碼以及使用OWASP ESAPI和HTML淨化器之類的工具來防止PHP中的跨站點腳本(XSS)。

See all articles

熱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

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

熱工具

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境