php如何正则替换css中的图片路径?

html-css015

php如何正则替换css中的图片路径?,第1张

思路是,读取CSS样式文件,正则取出所有url路径;然后,再用copy和unlink更换路径。代码如下:

<?php

$str=file_get_contents("layout.css")

preg_match_all("/url\((.*)\) /",$str,$out)

foreach($out[1] as $v){

$new=str_replace("../pic","img",$v)//设置新路径

if(file_exists($v)){//判断是否存在

copy($v,$new)//复制到新目录

unlink($v)//删除老文件

}else{

echo $v."<br/>"//如果不存在,就输出文件目录+文件名

}

}

?>

推荐的做法:

在入口文件处,给系统资源文件路径定义成常量;

比如:

    define('CSS_URL',SITE_URL.'shop/Public/css/')

然后在对应的显示页面,引入thinkphp的系统常量集中替换原先的CSS文件路径,

比如:

    <link href="{$Think.const.CSS_URL}style.css" rel="stylesheet" type="text/css" />

其他:

引入绝对路径:

需要相对于站点的根目录来引入   

可以保证在页面少的情况下正常的样式控制显示【不推荐】

引入相对路径:

相对于入口文件去引入

可控性不强,不方便项目的迁移、文件夹层级的变动【不推荐】