手机版

描述:抓取并下载CSS中所有图片文件的php代码

时间:2021-10-17 来源:互联网 编辑:宝哥软件园 浏览:

本文的亮点是正则形式比较复杂, (-_-) ,然后它是一个灰色且功能强大的用法的Copy函数。话说刚才听NsYta说小恶的主题太白了。最近太忙了,没空,还是自己开始新的话题吧。1.抓取CSS中的图片:1。先做好准备:首先在$url变量中保存css的原始路径,然后在abc.css中保存CSS的内容由于经常会遇到多个CSS文件,所以小谢没有直接填写一个CSS路径。相反,将几个CSS文件的内容合并在一起,并将它们全部插入到abc.css文件中。$ data=file _ get _ contents(' ABC . CSS ');然后把CSS文件的内容读入$data变量,再用正则表达式取出域名。这是因为很多图片文件使用的是相对根路径,比如/img/1.gif和img/1.gif,那么CSS的原始地址是在//www.jb51.net/css/,所以上面两个文件的位置是不一样的。第一个文件在/upload/201109/20110926143903807 . gif中,因为它的路径使用相对根路径。而第二个是in/upload/201109/20110926143903169 . gif,它的路径只是一个普通的相对路径。复制代码如下: $ URL='//www . JB 51 . net/CSS/';preg_match('/(。*\/\/.*?)\//',$url,$ host);//在这里,拿出正规格式的//www.jb51.net/,别忘了在后端加斜线。//.*?是懒人搭配,就是能搭配的越少,会搭配的越少,所以不会过度。$ 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 bird,o ( _ ) p. preg_match_all($regex,$data,$ result);4.处理这些图片:首先,用一个循环处理第一个有规律提取的分支内容数组。嗯,这里的第一个分支代表正则形式的第一个括号,呵呵,以此类推。然后通过正则表达式来判断Foreach ($result[1]为$val) {},因为这必须被认为是/upload/201109/20110926143903807 . gif,这样就用完整的路径来代替/img/1.gif或img/1.gif等。所以分开判断,然后判断这两个是/img/1.gif还是img/1.gif,复制代码如下:IF (preg _ match ('/http。*/',$ val)){ $ target=$ val;}否则如果(preg_match('/^\/.*/',$val)) { $target=$host。$ val} else { $target=$url。$ val} echo $target。br/\ r \ n ';最后,取出文件名,即/img/1.gif中的1.gif,保存文件。复制代码如下:preg _ match ('/)。* \/(.* \.\ d) $/',$ val,$ name);然后我们就可以开始下载了。在这里,我们将介绍复制功能的强大用法。复制的代码如下: if(!is_file('。/img/'。$ name[1]){ $ imgc=file _ get _ contents($ target);$handle=fopen('。/img/'。$name[1],' w ';fwrite($handle,$ imgc);fc lose($ handle);}上面一个是我们的老方法。嘎嘎,很麻烦。有一次,一个小恶魔突然发现了复制的力量。副本也可以下载,所以你可以很容易地用下面的代码来处理它。上面那个可以退了。复制的代码如下: if(!is_file('。/img/'。$ name[1]){ copy($ target,'。/img/'。$ name[1]);} 5.完整源代码:使用时只需填写$url,然后将所有CSS内容保存在abc.css中复制代码如下:PHP $ URL='//www . JB 51 . 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]为$val) { if (preg_match('/^http.*/',$ val)){ $ target=$ val;}否则如果(preg_match('/^\/.*/',$val)) { $target=$host。$ val} else { $target=$url。$ val} echo $target。br/\ r \ n ';preg_match('/。*\/(.*\.\D )$/',$val,$ name);if(!is_file('。/img/'。$ name[1]){ copy($ target,'。/img/'。$ name[1]);} }?

版权声明:描述:抓取并下载CSS中所有图片文件的php代码是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。