Для лучшего обзора вот мой код с Sabberworm.
Первый шаг: просто загрузите и сохраните:
$parser = new Sabberworm\CSS\Parser($cssoutput);
$oCss = $parser->parse();
$critical = $oCss->render(Sabberworm\CSS\OutputFormat::createCompact());
Результатом будут такие проблемы как:
fa-arrow-right:before{content:"ï¡";}.
Хорошо, я попытался удалить правило, например:
$parser = new Sabberworm\CSS\Parser($cssoutput);
$oCss = $parser->parse();
foreach($oCss->getAllRuleSets() as $oRuleSet) {
$oRuleSet->removeRule('content');
}
$critical = $oCss->render(Sabberworm\CSS\OutputFormat::createCompact());
Но это удаляет намного больше, я не могу специально найти почему и как, но css примерно на половину раньше
И моя основная часть (pq - это функция для phpQuery) приводит к ошибке (также комментируя часть удаления removerule)
$parser = new Sabberworm\CSS\Parser($cssoutput);
$oCss = $parser->parse();
foreach($oCss->getAllDeclarationBlocks() as $oBlock) {
foreach($oBlock->getSelectors() as $oSelector) {
echo "selektor: ".$oSelector->getSelector()."<br>";
if(!pq($oSelector->getSelector())->length)
{
$oBlock->removeSelector($oSelector);
}
}
if(count($oBlock->getSelectors()) === 0)
$oCss->remove($oBlock);
}
$critical = $oCss->render(Sabberworm\CSS\OutputFormat::createCompact());
Ошибка: Uncaught Sabberworm \ CSS \ Parsing \ OutputException: попытка напечатать блок объявления с отсутствующим селектором [строка №: 20] в /var/www/vho...