在PHP中解析CSS

时间:2011-09-08 07:52:53

标签: php css parsing

我需要解析CSS文件并将类似声明中的图像路径更改为以下内容?

url("/images/...")

基本上改变url("")

之间的任何内容

我想替换

url('images/img.jpg'), url("images/img.jpg") 

url(images/img.jpg)

代表url(/newpath/images/img.jpg)

我需要以某种方式获取当前路径,以便我可以将其附加到新路径

4 个答案:

答案 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()