php - CSS 选择器的正则表达式 - PHP

标签 php css regex

有谁知道从 css 声明中选择所有选择器的最强大的正则表达式是什么?下面是非标准 CSS 的 CSS 代码,这将是一个很好的测试用例。

.somenormalstyledeclaration 
{
    width:100%;
    height:100%;
    background-image: url(images/fallback-gradient.png);
}
.somenormalstyle1, .somenormalstyle2 
{
    width:100%;
    height:100%;
    background-image: url(images/fallback-gradient.png);
}
.gradient-bg 
{
   background-color: #1a82f7;
   background-image: url(images/fallback-gradient.png);
   background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#2F2727), to(#1a82f7));
   background-image: -webkit-linear-gradient(top, #2F2727, #1a82f7);
   background-image:    -moz-linear-gradient(top, #2F2727, #1a82f7);
   background-image:     -ms-linear-gradient(top, #2F2727, #1a82f7);
   background-image:      -o-linear-gradient(top, #2F2727, #1a82f7);
}

@-webkit-keyframes bounce_circle 
{
    0% 
    {
        opacity:0.3;
    }
    50% 
    {
        opacity:1;
        background-color:#111
    }
    100% 
    {
        opacity:0.3;
    }
}

最佳答案

这应该可以大部分。它只有几个步骤,但不如完整的解析器好。

  1. 用空格字符替换所有换行符
  2. 假设您从不使用包含 {} 的字符串,您可以将 /\{[^\}]\}/ 替换为,
  3. 将所有文本拆分到每个 ; 字符上的数组
  4. 去除每个选择器开头和结尾的所有空白

数组的每个元素都应该是一个选择器或一个“at-rule”(即 @charset utf-8;)。

我可能错过了一些其他边缘情况,但这应该是大多数情况下的快速解决方案。

关于php - CSS 选择器的正则表达式 - PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7101873/

相关文章:

php - 试图从秒转换为日期

php - DOM标签和属性规则和过滤

php - 使用 csv/xls 文件将数据插入 mysql 表

html - 我不能对固定位置的元素应用边距吗?

css - Positioned Pseudo 不适用于 Doctype

html - 如何在 iOS 中删除字符串中的评论 HTML 元素

php - echo 图像位置确实适用于带有空格的图像名称

css - Chrome 中字体系列的奇怪 css 优先级行为

regex - 如何使用 Perl 的智能匹配一次匹配多个模式?

regex - perl 正则表达式用于匹配对 c 函数的多行调用