我正在试图弄清楚如何屏蔽相对路径上的路径。这是我为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);
希望这是有道理的......
的问候,
安德鲁
答案 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}}删除。