当网站采用了CSS背景图片时,这些图片通常存储在CSS文件中,并且无法通过超链接进行访问或下载。在某些情况下,可能需要将这些图片下载到本地进行备份或使用。本文将介绍如何使用PHP编写一个CSS文件背景图片下载器。
<?php
$css_url = "http://example.com/example.css"; // CSS文件的链接
$css_content = file_get_contents($css_url); // 获取CSS文件的内容
$pattern = '/background-image:\s?url\((.*?)\)/i'; // 定义正则表达式匹配CSS文件中的背景图片url
preg_match_all($pattern, $css_content, $matches);
$folder_path = './images/'; // 定义存储下载的背景图片的文件夹路径
foreach ($matches[1] as $url) {
$url = str_replace(["'", "\""], '', $url);
$filename = basename($url); // 提取背景图片的文件名
$save_path = $folder_path . $filename; // 设置背景图片的保存路径
$ch = curl_init($url); // 初始化curl会话
$fp = fopen($save_path, 'wb'); // 打开文件
curl_setopt($ch, CURLOPT_FILE, $fp); // 将curl的输出写入文件
curl_setopt($ch, CURLOPT_HEADER, 0); // 隐藏头信息
curl_exec($ch); // 执行curl会话
curl_close($ch); // 关闭curl会话
fclose($fp); // 关闭文件
}
?>
上述代码首先获取CSS文件的内容,然后使用正则表达式匹配CSS文件中的背景图片URL,接着循环遍历每个URL并进行下载,最后将下载的图片保存到本地。
假设有一个CSS文件,其中包含2个背景图片,链接如下:
http://example.com/example.css
其中CSS文件的内容如下:
.background-1 {
background-image: url("/images/bg-image-1.jpg");
}
.background-2 {
background-image: url('/images/bg-image-2.png');
}
在运行上述代码后,会将这两张背景图片下载到本地的./images/
文件夹内,并分别以bg-image-1.jpg
和bg-image-2.png
的文件名进行保存。
假设有一个CSS文件,其中包含1个背景图片,链接如下:
http://example.com/example.css
其中CSS文件的内容如下:
.background {
background-image: url("../images/bg-image.jpg");
}
在运行上述代码后,会将这张背景图片下载到本地的./images/
文件夹内,并以bg-image.jpg
的文件名进行保存。注意,在这种情况下背景图片URL是一个相对路径,需要注意设置保存路径。