Home > Article > Backend Development > Grab and download the php code of all image files in CSS_PHP Tutorial
The highlight of this article is that the regular expression is more complicated, ╮(-_-)╭, and it is a very powerful use of the Copy function.
> By the way, I just heard NsYta say that Xiao Xie’s theme is too white, which is ridiculous. I'm too busy recently and don't have time, otherwise I would create a new theme myself.
1. Grab images in CSS:
> 1. First make preparations:
> The first step is to save the original path of CSS into the $url variable. Then save the CSS content in abc.css.
> Considering that multiple CSS files are often encountered, Xiaoxie did not directly fill in a CSS path.
> Instead, merge the contents of several CSS files together and stuff them all into the abc.css file. Quack.
$data = file_get_contents('abc.css');
> Then read the content of the CSS file into the $data variable, and then use regular expressions to extract the domain name.
> Because it is considered that many image files use relative root paths, such as /img/1.gif and img/1.gif.
> Then the original address of CSS is http://www.jb51.net/css/, so the locations of the two files above are different.
> The first file is at /upload/201109/20110926143903807.gif, because its path uses a relative root path.
> And the second one is at /upload/201109/20110926143903169.gif, and its path is just an ordinary relative path.
2. Create the image storage folder:
> Xiaoxie used is_dir here to determine whether the folder exists. If it exists, there is no need to create it a second time.
> Haha, by the way, the is_file function can determine whether this file is a normal file and whether it exists.
> But file_exists() is superior, because I saw someone discussing it on Webmasterworld.com once.
if (!is_dir('img')) { mkdir('img'); }
> 3. Use regular expressions to get the relative address of the image:
$regex = '/url('{0,1}"{0,1}(.*?)'{0,1}"{0,1})/';
//Use regular expressions here To match the image address, three situations must be considered, namely url(1.gif) url('1.gif') url("1.gif").
//These three writing methods can be used, so we will use the above regular rules to take out the 1.gif inside.
//'{0,1} means that single quotes may appear 1 or 0 times, " means that double quotes may appear 1 or 0 times.
//Lazy matching must be used in the middle, otherwise it will be taken out It's 1.gif" instead of 1.gif bird, O(∩_∩)P.
preg_match_all($regex,$data,$result);
> 4. Process these images:
> First use a loop to extract the above using regular expressions Let’s deal with the content array of the first branch.
> Well, the first branch here represents the first bracket in the regular expression, haha, and so on.
foreach ($result[1] as $val) { }
> Then use regular expressions to determine, because you also need to consider this /upload/201109/20110926143903807.gif.
> This uses the complete path instead of /img/1.gif or img/1.gif like others.
> So judge it separately, and then judge these two to see if it is /img/1.gif or img/1.gif.