這篇文章的亮點是,正則式更加複雜鳥,?(-_-)?,再就是 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]);
}
}?>

在css中,可用list-style-type属性来去掉ul的圆点标记,语法为“ul{list-style-type:none}”;list-style-type属性可设置列表项标记的类型,当值为“none”可不定义标记,也可去除已有标记。

区别是:css是层叠样式表单,是将样式信息与网页内容分离的一种标记语言,主要用来设计网页的样式,还可以对网页各元素进行格式化;xml是可扩展标记语言,是一种数据存储语言,用于使用简单的标记描述数据,将文档分成许多部件并对这些部件加以标识。

在css中,可以利用cursor属性实现鼠标隐藏效果,该属性用于定义鼠标指针放在一个元素边界范围内时所用的光标形状,当属性值设置为none时,就可以实现鼠标隐藏效果,语法为“元素{cursor:none}”。

在css中,rtl是“right-to-left”的缩写,是从右往左的意思,指的是内联内容从右往左依次排布,是direction属性的一个属性值;该属性规定了文本的方向和书写方向,语法为“元素{direction:rtl}”。

在css中,可以利用“font-style”属性设置i元素不是斜体样式,该属性用于指定文本的字体样式,当属性值设置为“normal”时,会显示元素的标准字体样式,语法为“i元素{font-style:normal}”。

转换方法:1、给英文元素添加“text-transform: uppercase;”样式,可将所有的英文字母都变成大写;2、给英文元素添加“text-transform:capitalize;”样式,可将英文文本中每个单词的首字母变为大写。

在css3中,可以用“transform-origin”属性设置rotate的旋转中心点,该属性可更改转换元素的位置,第一个参数设置x轴的旋转位置,第二个参数设置y轴旋转位置,语法为“transform-origin:x轴位置 y轴位置”。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3漢化版
中文版,非常好用