Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 正则表达式:获取css类、ID和标记_Php_Html_Css_Regex - Fatal编程技术网

Php 正则表达式:获取css类、ID和标记

Php 正则表达式:获取css类、ID和标记,php,html,css,regex,Php,Html,Css,Regex,我有模式来获取css代码的选择器,它们是.classes、#ids和html标记。我使用preg_match将它们排序到一个数组中,只需选择符的名称即可 所发生的事情是,我只得到第一个选择器两次,一次是带括号的,另一次是不带括号的 这是$contect: body{color:black;}.class_class{color:#fff;font:tahoma;}#awesome#id{} 结果如下: 代码如下: 您可以使用此正则表达式~{(.*)}~ 如果关闭支架和下一个选择器之间没有空间,

我有模式来获取css代码的选择器,它们是.classes#idshtml标记。我使用
preg_match
将它们排序到一个数组中,只需选择符的名称即可

所发生的事情是,我只得到第一个选择器两次,一次是带括号的,另一次是不带括号的

这是
$contect

body{color:black;}.class_class{color:#fff;font:tahoma;}#awesome#id{}

结果如下: 代码如下:
您可以使用此正则表达式
~{(.*)}~


如果关闭支架和下一个选择器之间没有空间,则此操作无效。如果将“”作为preg_replace中的第二个参数,即使在这种情况下也应该可以使用。@Dexa,当前正则表达式正在按照OP的要求工作,如果您想修改,请随时编辑我的答案。:)娜哈,我不会编辑它,只是想到了一件可以帮上忙的小事情。如果我在选择器之间划破了线,那就不行了。@AbdullahSalma,我已经添加了
s
修饰符,请参见代码。因此,它也将匹配换行符<代码>$str=preg_replace(“~{(.*?}~s)”,“”,$str)考虑改用DOM解析器。
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
)
<?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
)