首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何替换css中的url?

问如何替换css中的url?
EN

Stack Overflow用户
提问于 2013-12-03 03:48:13
回答 1查看 1K关注 0票数 0

我正在尝试将多个css文件合并为一个文件(来自我主机中的许多不同文件夹,包括外部css文件)。我使用以下简短的代码:

声明数组:

代码语言:javascript
复制
$styles=array(
array(
'name'=>'style1.css',
'path'=>'http://mydomain.com/css/'
),
array(
'name'=>'camera.css',
'path'=>'http://mydomain.com/js/camera/'
),
array(
'name'=>'style3.css',
'path'=>'http://external.com/assets/css/'
));

获取内容并替换url:

代码语言:javascript
复制
foreach ($styles as $style) {
echo preg_replace('/url\(\s*[\'"]?\/?(.+?)[\'"]?\s*\)/i', 'url('.$style['path'].'$1)', file_get_contents($style['path'].$style['name']));
}

合并成一个css文件后,我有一些css背景图像url,如下所示:

代码语言:javascript
复制
url(ttp://mydomain.com/css/../image/background.png) //Internal path - Case 1A
url(http://mydomain.com/js/camera/../../image/background.png) //Internal path - Case 1B
url(http://external.com/assets/css/../../image/background.png) //External path - Case 2

实际上,内部路径(案例1A,1B)可以显示背景图像(尽管缺乏专业性),但外部路径(案例2)无法显示背景图像,我的问题是:如何将错误的路径替换为正确的路径(根据当前结果进行修复),如下:

代码语言:javascript
复制
url(http://mydomain.com/image/background.png) //Correct internal path 
url(http://external.com/image/background.png) //Correct external path 

(我理解问题是,如果找到一个包含'../‘的关键字,将删除关键字并删除包含'*/’的关键字之前的1个字符串,但我不知道该怎么做)。提前谢谢。

(在提出新问题之前,我已经试着找出并试着搜索了1周)。

EN

回答 1

Stack Overflow用户

发布于 2013-12-03 03:59:18

另外,将/up-level-directory/../替换为/

这就是在全球范围内使用/的'/([^\/]+)/../'

$correct_url = preg_replace('|/\w+/\.\./|','/',$url);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20336576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档