我需要解析CSS文件并将类似声明中的图像路径更改为以下内容?
url("/images/...")
基本上改变url("")
我想替换
url('images/img.jpg'), url("images/img.jpg")
和
url(images/img.jpg)
代表url(/newpath/images/img.jpg)
我需要以某种方式获取当前路径,以便我可以将其附加到新路径
答案 0 :(得分:2)
你可以这样做:
$line = "background-image: url(/images/image.png) no-repeat;";
//or $line = "background-image: url( /images/image.png ) no-repeat;";
echo preg_replace('/(?<=url\()[^\)]+(?=\))/x', '/newfolder/newimage.png', $line);
正则表示:
[^\)]+
字符串包含1个字符或更多字符,不含)
(?<=url\()
,必须有url(
(?=\))
必须有)
x
模式中的空格数据字符完全被忽略,除非转义或在字符类(more info)内。答案 1 :(得分:0)
使用正则表达式和preg_replace
。类似的东西:
url\(([^\)]+)\)
答案 2 :(得分:0)
或者你可以通过.htaccess将你的css文件作为php脚本提供,如下所示:
<FilesMatch "\.css$">
php_value default_mimetype "text/css"
SetHandler application/x-httpd-php
</FilesMatch>
然后在每个css文件中,您可以定义媒体路径并在任何地方使用它,例如:
<?php define('MEDIA_PATH', '../images/'); ?>
.class{background-image:url(<?php echo MEDIA_PATH;?>background.jpg)}
答案 3 :(得分:-1)
也许您可以尝试查看:preg_replace()