时间:2021-07-01 10:21:17 帮助过:23人阅读
- <br>$url = 'http://www.bitsCN.com/css/'; preg_match('/(.*\/\/.*?)\//',$url,$host); <br>//这里用正则式把 http://www.bitsCN.com/ 给取出来,后端不要忘记加斜杠喔。 <br>//.*? 是懒惰匹配,也就是能匹配得越少就匹配越少的内容,这样就不会取过头了。 <br>$host = $host[1]; <br><br>
- <p><img src="http://img.bitscn.com/upimg/allimg/c140721/1405912933I440-14145.jpg"><br>2. 把图片存储文件夹建好: <br>> 小邪这里用了 is_dir 来确定文件夹是否存在,存在的话,就不用再建立第二遍了。 <br>> 呵呵,顺便说下,is_file 函数可以确定此文件是否为正常文件,也可以确定是否存在。 <br>> 但 file_exists() 优越一点,因为某次看到有人在 Webmasterworld.com 上面讨论过。 <br><br>if (!is_dir('img')) { mkdir('img'); } <br><br>> 3. 用正则式把图片相对地址取出来: <br><br>$regex = '/url\(\'{0,1}\"{0,1}(.*?)\'{0,1}\"{0,1}\)/'; <br>//这里用正则式匹配出图片地址,要考虑三种情况,即 url(1.gif) url('1.gif') url("1.gif")。 <br>//这三种写法都是可以使用的,所以咱们就用上面的正则把里面的 1.gif 取出来。 <br>//\'{0,1} 表示单引号可能出现1次或0次,\" 则表示双引号可能出现1次或0次。 <br>//中间必须使用懒惰匹配,不然取出来的就是 1.gif" 而不是 1.gif 鸟,O(∩_∩)P。 <br>preg_match_all($regex,$data,$result); <br><br>> 4. 处理这些图片: <br><br>> 首先使用一个循环,把上面是用正则提取出来的第一分支内容数组给处理一下。 <br>> 额,这里的第一分支表示正则式里面的第一个括号来着,呵呵,以此类推。 <br><br>foreach ($result[1] as $val) { } <br><br>> 然后是用正则式判定,因为还要考虑到这样 /upload/201109/20110926143903807.gif。 <br>> 这样是使用了完整的路径了,而不是想其他的一样是 /img/1.gif 或者 img/1.gif。 <br>> 所以单独判断一下,然后接着判断这两个,看看是 /img/1.gif 还是 img/1.gif。 <br><u></u> 代码如下:</p><pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br>if (preg_match('/^http.*/',$val)) { $target = $val; } <br>else if (preg_match('/^\/.*/',$val)) { $target=$host.$val; } <br>else { $target=$url.$val; } <br>echo $target."<br>\r\n"; <br> <br>> 最后把文件名取出来,即 /img/1.gif 中的 1.gif,用于保存文件。 <br><u></u> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br>preg_match('/.*\/(.*\.\D+)$/',$val,$name); <br> <br>> 然后咱们就可以开始下载了,这里要介绍一个强大的 Copy 函数用法。 <br><u></u> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br>if (!is_file('./img/'.$name[1])) { <br>$imgc = file_get_contents($target); <br>$handle = fopen('./img/'.$name[1],'w+'); <br>fwrite($handle,$imgc); <br>fclose($handle); <br>} <br> <br>> 上面那个是咱们的老方法了,嘎嘎,很麻烦。某次,小邪突然发现 Copy 的强大。 <br>> Copy 居然也可以下载,所以可以轻松使用下面的代码来处理,上面的可以退休鸟。 <br><u></u> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br>if (!is_file('./img/'.$name[1])) { <br>copy($target,'./img/'.$name[1]); <br>} <br> <br>> 5. 完整源代码: <br><br>> 使用的时候把 $url 填好即可,然后把所有 CSS 内容存到 abc.css 中即可。 <br><u></u> 代码如下:<pre class="brush:php;toolbar:false layui-box layui-code-view layui-code-notepad"><ol class="layui-code-ol"><li><br><!--?php <BR-->$url = 'http://www.bitsCN.com/css/'; <br>$data = file_get_contents('abc.css'); <br>preg_match('/(.*\/\/.*?)\//',$url,$host); <br>$host = $host[1]; <br>if (!is_dir('img')) { mkdir('img'); } <br>$regex = '/url\(\'{0,1}\"{0,1}(.*?)\'{0,1}\"{0,1}\)/'; <br>preg_match_all($regex,$data,$result); <br>foreach ($result[1] as $val) { <br>if (preg_match('/^http.*/',$val)) { $target = $val; } <br>else if (preg_match('/^\/.*/',$val)) { $target=$host.$val; } <br>else { $target=$url.$val; } <br>echo $target."<br>\r\n"; <br>preg_match('/.*\/(.*\.\D+)$/',$val,$name); <br>if (!is_file('./img/'.$name[1])) { <br>copy($target,'./img/'.$name[1]); <br>} <br>}?> </li></ol></pre></li></ol></pre></li></ol></pre></li></ol></pre></li></ol></pre>