我有获取css代码选择器的模式, .classes , #ids 和 html标签。我使用preg_match
将它们排序成一个数组,只是选择器的名称。
发生的事情是我只获得第一个选择器两次,一次打开括号,再一次没有。
这是 $contect
:
body{ color: black; } .class_class { color: #fff; font: tahoma; } #awesome_id{ }
Array
(
[0] => body{
[1] => body
)
<?php
#Patterns
$selectors = "/(\.?\#?-?[_a-zA-Z]+[_a-zA-Z0-9-]*\s*)\{/";
#Sort
preg_match($selectors, $content, $_selectors);
?>
<pre>
<?php
print_r($_selectors);
?>
</pre>
我想要的 - 根据内容 - 结果是这样的
Array
(
[0] => body
[1] => .class_class
[2] => #awesome_id
)
答案 0 :(得分:1)
您可以使用此正则表达式~{(.*?)}~
<?php
$str='body{ color: black; } .class_class { color: #fff; font: tahoma; } #awesome_id{ }';
$str = preg_replace("~{(.*?)}~s","", $str);
$arr = array_filter(explode(' ',$str));
print_r($arr);
输出:
Array
(
[0] => body
[1] => .class_class
[3] => #awesome_id
)