我想将样式表分割成数组,每个选择器都以他的样式分隔数组。到目前为止,我有这个代码,它运行良好,但不存在媒体查询的情况。我想实现的是将媒体查询中的选择器拆分为单个数组,但每个数组都有他的媒体查询选择器。 这是实施例的风格HTMLPHP - 将样式表分割成数组
<style>
#abc{ background-color: gray; font-size: 10px;}
.abc { background-color: gray; font-size: 10px;}
@media only screen and (max-width:640px) {
#abc {
height: 200px !important;
}
}
@media only screen and (max-width:640px) {
#abcd {
height: 200px !important;
}
.abcd {
height: 200px !important;
}
}
</style>
这是代码,我到目前为止有:
$dom = new DomDocument();
@$dom->loadHTML($html);
$para = $dom->getElementsByTagName('style'); #DOMNodeList
if ($para instanceof DOMNodeList) {
foreach ($para as $node) {
printf ($node->nodeValue);
}
}
$file = $node->nodeValue;
$arrs = explode('}', $file);
for ($i = 0; $i < count($arrs); $i++)
{
echo 'style ' . $i . ' - ' . $arrs[$i] . '<br />';
}
这是uotput我越来越:
style 0 - #abc{ background-color: gray; font-size: 10px;
style 1 - .abc { background-color: gray; font-size: 10px;
style 2 - @media only screen and (max-width:640px) { #abc { height: 200px !important;
style 3 -
style 4 - @media only screen and (max-width:640px) { #abcd { height: 200px !important;
style 5 - .abcd { height: 200px !important;
通缉输出:
style 0 - #abc{ background-color: gray; font-size: 10px;
style 1 - .abc { background-color: gray; font-size: 10px;
style 2 - @media only screen and (max-width:640px) { #abc { height: 200px !important;
style 3 -
style 4 - @media only screen and (max-width:640px) { #abcd { height: 200px !important;
style 5 - @media only screen and (max-width:640px) { .abcd { height: 200px !important;
什么是w应该是正确的方法来获得?
'如果($段的instanceof的DOMNodeList){':这个测试是没用的,'$ para'始终是一个'DOMNodeList'情况下,即使没有任何'风格'标签。为什么使用'printf($ node-> nodeValue);'?写'echo $ node-> nodeValue;',不需要格式化。 –
要回答你的主要问题,正确的方法是propably找到一个CSS解析库:http://github.com/sabberworm/PHP-CSS-Parser –
@CasimiretHippolyte,我试过,但分析器不支持媒体查询。这是一个开放的问题仍然 – codexy