我想將樣式表分割成數組,每個選擇器都以他的樣式分隔數組。到目前爲止,我有這個代碼,它運行良好,但不存在媒體查詢的情況。我想實現的是將媒體查詢中的選擇器拆分爲單個數組,但每個數組都有他的媒體查詢選擇器。 這是實施例的風格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