首页 > 解决方案 > 在 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 的内容及其路径,并执行以下操作:

  1. 在 $content 中,它查找 ../ 或 ../../ (或 ../../../ )样式的字符串
  2. 基于参数 $css_path ,它将相对路径替换为绝对路径。例如,一个 $css_path 值是:/themes/movic/assets/css/theme.css

你能帮助我吗?提前打个招呼,非常感谢你,

标签: php

解决方案


推荐阅读