php - 在 css 内容中查找相对路径
问题描述
我正在完成在网站上开发自定义 css 合并系统。我已经从包含的所有 css 中合并了生成的 css。
但我发现了一个问题,即包含相对 URL 的内容。
例如:
background: url('../../img/ratingicon.png') no-repeat center bottom transparent;
将每个 css 的内容添加到合并的 css 的函数如下:
/**
* fn adding css merge
* @param $merged_css_path example of value: /themes/movic/assets/css/merged.css
* @param $css_path example of value: /themes/movic/assets/css/theme.css
*/
private function addMergedCSS($merged_css_path, $css_path)
{
$uri = $this->getFQDN() . $this->getUriFromPath($css_path); //example of value: https://mydomain.test/themes/movic/assets/css/theme.css
$content = file_get_contents(_PS_ROOT_DIR_.$merged_css_path); //_PS_ROOT_DIR_ value is shared/httpd/myfolder/htdocs
$content .= file_get_contents($uri);
$content = $this->fixPathsUrlsProblem($content, $css_path);
file_put_contents(_PS_ROOT_DIR_.$merged_css_path, $content); //_PS_ROOT_DIR_ value is shared/httpd/myfolder/htdocs
}
我考虑过使用该功能:
fixPathsUrlsProblem($content, $css_path)
它接收 css 的内容及其路径,并执行以下操作:
- 在 $content 中,它查找 ../ 或 ../../ (或 ../../../ )样式的字符串
- 基于参数 $css_path ,它将相对路径替换为绝对路径。例如,一个 $css_path 值是:/themes/movic/assets/css/theme.css
你能帮助我吗?提前打个招呼,非常感谢你,
解决方案
推荐阅读
- c - 数组和 C 中的引用传递
- javascript - Javascript 回调函数未按预期工作。尝试确保所有代码在完成逻辑执行之前完成
- parallel-processing - 为什么 flink 作业的 maxparallelism 不能在不丢失状态的情况下更新?
- powerbi - Power BI 和 Excel 之间的网关
- curl - 在 vim 内的当前缓冲区上运行 curl
- vue.js - 动态属性的“VueX 不会在突变处理程序之外改变 vuex 存储状态”。如何解绑?
- scala - 处理重复案例类的惯用方法
- ios - 大标题在推后最初是折叠的
- ffmpeg - ffmpeg.js 构建缺少定义的格式
- json - 使用 SuperGraph 作为库的 JSON 响应中的“数据”字段