我正在研究一个将多个 CSS 合二为一的脚本。这是脚本。
$full_string = "";
foreach($allfiles as $curfile => $file) {
$file = $PATH[$curfile] . $file;
$file_open = fopen($file , 'r');
$concat = "\n" . fread($file_open , filesize($file)) . "\n";
$full_string .= $concat;
fclose($file_open);
}
return $full_string;
在这里,我将所有 CSS 文件合并为一个。但现在的问题是我必须将当前的 CSS($file) 与另一个 css 进行比较(让我们将其视为overrider.css
)。如果 $file 具有类似的样式,
h1 {
color: white;
background: teal;
FONT-FAMILY: arial, helvetica, lucida-sans, sans-serif;
FONT-SIZE: 18pt;
FONT-STYLE: normal;
FONT-VARIANT: normal;
}
body
{
font-family: arial;
FONT-SIZE: 14px;
}
如果 overrider.css 具有类似的样式,
body
{
font-family: Calibri;
color: #3E83F1;
}
那么最终生成的 CSS(output.css) 应该是,
h1 {
color: white;
background: teal;
FONT-FAMILY: arial, helvetica, lucida-sans, sans-serif;
FONT-SIZE: 18pt;
FONT-STYLE: normal;
FONT-VARIANT: normal;
}
body
{
font-family: Calibri;
FONT-SIZE: 14px;
color: #3E83F1;
}
在这里,由于 body 中的 style override.css
,font-family
它替换了原始 CSS 中的 font-family 属性,并且由于颜色是原始 CSS 文件 ($file) 中不存在的新属性,因此它应该将该属性添加到 original CSS 文件。那么如何在 PHP 中实现这一点,因为我对解析 CSS 没有任何想法。对此的任何想法将不胜感激。
请注意,我需要通过将输入作为 file1($file) 和 file2(override.css) 来生成一个新的 CSS 文件,并且我们需要生成 output.css 并覆盖样式。
提前致谢。