Home  >  Article  >  Backend Development  >  Grab and download the php code of all image files in CSS_PHP Tutorial

Grab and download the php code of all image files in CSS_PHP Tutorial

WBOY
WBOYOriginal
2016-07-21 15:23:431041browse

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.

Copy code The code is as follows:

$url = 'http://www.jb51.net/css/'; preg_match('/(.*//.*?)//',$url,$host);
//Here, use regular expressions to take out http://www.jb51.net/, backend Don't forget to add the slash.
//.*? is lazy matching, that is, the less content it can match, the less content it can match, so that it will not be overdone.
$host = $host[1];

Grab and download the php code of all image files in CSS_PHP Tutorial
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.

Copy code The code is as follows:

if (preg_match('/^http.*/',$val)) { $target = $val; }
else if (preg_match('/^/.*/',$val)) { $target=$host.$val; }
else { $target=$url. $val; }
echo $target."
rn";

> Finally, take out the file name, which is 1.gif in /img/1.gif , used to save files.
Copy code The code is as follows:

preg_match('/.*/(.*.D+)$/',$ val,$name);

> Then we can start downloading. Here we will introduce the usage of a powerful Copy function.
Copy code The code is as follows:

if (!is_file('./img/'.$name[1]) ) {
$imgc = file_get_contents($target);
$handle = fopen('./img/'.$name[1],'w+');
fwrite($handle,$imgc );
fclose($handle);
}

> The above method is our old method, quack, it’s very troublesome. One time, Xiao Xie suddenly discovered the power of Copy.
> Copy can actually be downloaded, so you can easily use the following code to process it, and the above one can be retired.
Copy code The code is as follows:

if (!is_file('./img/'.$name[1]) ) {
copy($target,'./img/'.$name[1]);
}

> 5. Complete source code:

> When using, just fill in $url, and then save all CSS content to abc.css.
Copy code The code is as follows:

$url = 'http://www.jb51 .net/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]);
}
}?>

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/324413.htmlTechArticleThe highlight of this article is that the regular expression is more complicated, ╮(-_-)╭, and then Copy A very powerful use of functions. By the way, I just heard NsYta say that Xiao Xie’s theme is too white, and it’s a waste. ...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn