我需要解析一些CSS代码,如:
color: black;
font-family:"Courier New";
background:url('test.png');
color: red;
--crap;
分为:
array (
'color'=>'red',
'font-family'=>'"Courier New"',
'background'=>'url(\'test.png\')',
'--crap'=>''
)
{...}
)或选择器({{1} })。a.myclass#myid
)完全覆盖原始项目({{1} })。答案 0 :(得分:2)
这是一个简单的版本:
$a = array();
preg_match_all('/^\s*([^:]+)(:\s*(.+))?;\s*$/m', $css, $matches, PREG_SET_ORDER);
foreach ($matches as $match)
$a[$match[1]] = isset($match[3]) ? $match[3] : null;
示例输出:
array(4) {
["color"]=>
string(3) "red"
["font-family"]=>
string(13) ""Courier New""
["background"]=>
string(15) "url('test.png')"
["--crap"]=>
NULL
}
除了您的源数据以外没有测试任何东西,所以我确定它有缺陷。可能足以让你入门。
答案 1 :(得分:0)
您可以尝试:
$result = array();
if(preg_match_all('/\s*([-\w]+)\s*:?\s*(.*?)\s*;/m',$input,$m))
var_dump($m);
// $m[1] contains all the properties
// $m[2] contains their respective values.
for($i=0;$i<count($m[1]);$i++) {
$result[$m[1][$i]] = $m[2][$i];
}
}
答案 2 :(得分:0)
我发现这几周后看起来很有趣。
示例:
$Parser = new cssparser();
$Results = $Parser->ParseStr("color: black;font-family:"CourierNew";background:url('test.png');color: red;--crap;");
答案 3 :(得分:0)
为什么不看看CSSTidy?