【发布时间】:2012-10-05 11:22:40
【问题描述】:
我想删除给出错误的 css 规则,例如这里是示例
.banneritem {
border: 1px solid #CED4E0;
border color: #CBCBCB;// is not valid cause it actually refers to border-color missing (-)
margin-bottom: 10px;
}
是否有任何框架或库会从文件中省略这种 css 规则。
我在这里使用的是 sabberworm css 解析器我的示例代码
if ($loadedContents != ""){
preg_match_all('/display: none/is', $loadedContents, $matchvalue);
if (count($matchvalue[0]) > 0) {
$oCssParser = new Sabberworm\CSS\Parser($loadedContents);
$oDoc = $oCssParser -> parse();
foreach ($oDoc->getAllRuleSets() as $oRuleSet) {
if ($oRuleSet instanceof Sabberworm\CSS\RuleSet\AtRule) {
break;
}
$sSelector = $oRuleSet -> getSelectors();
$sSelector = $sSelector[0] -> getSelector();
$aDisplayRule = $oRuleSet -> getRules('display');
if (count($aDisplayRule) > 0) {
$aValues = $aDisplayRule['display'] -> getValues();
if ($aValues[0][0] == "none") {
$displayValue[] = "display:none;";
$displaySelector[] = $sSelector;
}
}
$bDisplayRule = $oRuleSet -> getRules('visibility');
if (count($bDisplayRule) > 0) {
$bValues = $bDisplayRule['visibility'] -> getValues();
if ($bValues[0][0] == "hidden") {
$visibilityValue[] = "visibility:hidden;";
$visibilitySelector[] = $sSelector;
}
}
}
}
}
我在这里处理所有 css 规则并同时找到 display:none 规则,由于这个错误的规则,我遇到了致命错误。
任何帮助将不胜感激。
【问题讨论】:
-
你可以使用cleancss.com ...一个不错的工具。
-
或 less.js(程序化 css 框架 - 在 css 文件中也返回失败)。
-
@MihaiIorga 我想要 php 代码,所以我可以将它添加到我的项目中:) 无论如何谢谢。
-
这是css唯一的错误吗?或者是否存在其他错误而不仅仅是缺少破折号? - 编辑:csstidy.sourceforge.net/index.php
-
我正在使用 sabberworm css 解析器,这种规则给了我致命的错误,我正在更新我的问题以获得更好的解释。
标签: php parsing css-parsing php-parser