正则表达式:获取css类,id和标签

时间:2014-04-12 12:18:45

标签: php html css regex

我有获取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
)

1 个答案:

答案 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
)

Demo

enter image description here