preg_replace () относительные пути к абсолютному пути.(Маскировка?) - PullRequest
2 голосов
/ 21 января 2011

Я пытаюсь выяснить, как замаскировать путь по относительным путям. Это пользовательский сценарий минификатора, который я реализую для файлов CSS, и должен указывать абсолютные относительные пути.

Скажем, у меня есть следующее в файле 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);

Надеюсь, это имеет смысл ...

С уважением,
Andrew

Ответы [ 2 ]

1 голос
/ 21 января 2011

Нашел это из другого вопроса ( PHP: Как разрешить относительный URL ): Совет PHP: Как преобразовать относительный URL в абсолютный URL

Я думаю, что нужной вам функцией является функция url_remove_dot_segments, которая принимает объединенный путь (например, $base . '/' . $path) и возвращает версию с удаленными //, /./ и /../.

1 голос
/ 21 января 2011

Я также не вижу большого смысла в ваших действиях, но, возможно, функция PHP "realpath" - ваш друг.

...