preg_replace()绝对路径的相对路径。 (掩蔽?)

时间:2011-01-20 23:43:23

标签: php regex filesystems preg-replace minify

我正在试图弄清楚如何屏蔽相对路径上的路径。这是我为CSS文件实现的自定义minifier脚本,需要绝对的相对路径。

所以说我在CSS文件中有以下内容url('../images/file.jpg')这个文件位于/application/module/assets/css/theme.css目录中,这意味着CSS文件中的新路径需要/application/module/assets/images/file.jpg

现在说/application/plugins/pluginName/assets/css/plugin.css中有一个CSS文件并链接到../../../../module/assets/images/image.jpg,替换后的路径需要/application/module/assets/images/file.jpg

所以我问,是否有一个很好的preg_replace设置我可以用来做到这一点:

str_replace('../', '/path/to/file/', $file);
str_replace('../../', '/path/to/', $file);
str_replace('../../../', '/path/', $file);

希望这是有道理的......

的问候,
安德鲁

2 个答案:

答案 0 :(得分:1)

我在你的工作中也没有多大意义,但也许PHP函数“realpath”是你的朋友。

答案 1 :(得分:1)

从另一个问题(PHP: How to resolve a relative url):PHP tip: How to convert a relative URL to an absolute URL

中找到了这个

我认为你想要的函数是url_remove_dot_segments函数,它采用连接路径(例如$base . '/' . $path)并返回一个///./和{{ 1}}删除。