2013-01-25 35 views
4

我使用PHP檢索數據庫中的css文件。使用PHP搜索PHP中的某些內容

所以我有:$mycss = "SOME CSS SOME CSS SOME CSS"

在這個$ mycss,我可以有:

div.coul01,.red,.coul01{ 
    color:#663333; 
} 
div.coul02,.blue,.coul02{ 
    color:#3366CC; 
} 

在這個例子中,我需要在PHP以檢索,對於與DIV開頭的每個指令。第二個元素,這裏是「紅色」和「藍色」。

你有什麼想法嗎?謝謝 !

+0

谷歌搜索顯示https://github.com/sabberworm/PHP-CSS-Parser。我沒有使用它。 –

+0

你想要指令只用div開始? –

+0

我可以有div。,a。,form。 etc .... –

回答

1

如果你真的不想使用任何庫,並要堅持正則表達式,這會爲你工作:

<?php 
$mycss = "body,div.coul01,.white,.coul01{ 
    color:#000000; 
} 
div.coul01,.red,.coul01{ 
    color:#663333; 
} 
div.coul02,.blue,.coul02{ 
    color:#3366CC; 
} 
div.coul02,.grey,.coul02{ 
    color:#C0C0C0; 
}"; 
preg_match_all("/^div\.[^,{]*,[\.#](\w+)/ms", $mycss, $matches, PREG_PATTERN_ORDER, 0); 
?> 

,然後在$matches變量,你將有這樣的事情:

$matches[0][0] div.coul01,.red 
$matches[0][1] div.coul02,.blue 
$matches[0][2] div.coul02,.grey 
$matches[1][0] red 
$matches[1][1] blue 
$matches[1][2] grey 

$matches[1]是你在找什麼

Example

+1

我不想使用任何librany ^^我測試你的解決方案。 –

+0

這不好....我可以有紅色,藍色,綠色,sqkfjldfhsdkfjhsdf或一切。 –

+0

@ClémentAndraud我在這裏測試了它:http://xrg.es/#do1xhl,它只能像你說的那樣用紅色和藍色工作 – SERPRO

0

我會建議使用CSS解析器,如Sabberworm。你也可以嘗試this library,我見過一些人推薦。還有一個PEAR包,你可能想看看叫HTML_CSS。請注意,它目前未被維護。就我個人而言,我會遠離爲這類事情編寫自定義正則表達式表達式,因爲我已經看到類似這樣的項目「帶翅膀」,並導致混亂的正則表達式代碼,隨着項目擴展,很難維護這些代碼並添加更多功能。一分鐘你想要所有以div開頭的東西,下一個你想要控制h1,span和p樣式。