我正在处理一个生成多个CSS的脚本。这是脚本。将多个CSS文件合并到一个PHP中
$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($文件)与另一个CSS(我们认为它是overrider.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: 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;
}
这里,由于override.css
中的body的样式具有font-family
,所以它取代原始CSS中的font-family属性,并且由于颜色是不存在于($ file)中的新属性,是原始的CSS文件,所以它应该添加属性到原始的CSS文件。所以如何在PHP中实现这一点,因为我没有任何解析CSS的想法。任何想法都将不胜感激。
请注意,我需要通过将输入作为file1($ file)和file2(override.css)生成一个新的CSS文件,并且我们需要将output.css与覆盖的样式生成一致。
在此先感谢。如果你想font-family: arial;
是应用,然后将其添加为font-family: arial !important;
你不必担心合并它们,因为浏览器会自动从第一个CSS发现那么它将颜色的第二CSS颜色添加到body标签
它应该生成一个新的CSS,而不是css覆盖... – Stranger 2013-02-28 06:06:08
@Udhay你的意思是找到差异并使用php创建新的css。 – 2013-02-28 06:09:01