【问题标题】:PHP Regex to match a specific css class name + :before pseudoPHP Regex 匹配特定的 css 类名 + :before 伪
【发布时间】:2014-01-10 02:04:47
【问题描述】:

已经超过 6 小时试图找到最佳的 PHP 正则表达式来匹配特定的类名 + :before 伪。例如我有这样的css代码

h1 {
  font-size: 3em;
  line-height: 1.65em;
}

p{line-height: 1.5em; margin: 10px 0;}

.action-admin:before{
   content: "";
   display: block;
   width: 50px;
   height: 50px;
}

.action-user:before{
   content: "";
   display: block;
   width: 20px;
   height: 20px;
}

footer{
   clear: both;
}

所以,我想搜索所有类名与 '.action-{anyotherwords}:before' 匹配的 css 代码并将它们列在 php 变量中(将处理这个到下一个操作)

所以,简单来说 - 我只想从上面的 css 中获取这些代码

.action-admin:before{
   content: "";
   display: block;
   width: 50px;
   height: 50px;
}

.action-user:before{
   content: "";
   display: block;
   width: 20px;
   height: 20px;
}

【问题讨论】:

    标签: php css regex


    【解决方案1】:

    您可以使用此正则表达式来查找所有这些块:

    \.action-[\w-]+:before\s*?\{[^}]+\}
    

    例子:

    preg_match_all("/\.action-[\w-]+:before\s*?\{[^}]+\}/", $css, $matches);
    $actionCSS = implode("\n\n", $matches[0]);
    

    只有动作块的 CSS 代码将在 $actionCSS 中。

    【讨论】:

    • 正则表达式应该是\.action-[a-z]+:before\s*\{[^}]+\}。请记住,这只允许在“.action”之后使用小写字母。
    • @tenub 没错,我将自己的示例代码限制在最低限度,但你的更适合通用 CSS。
    • 谢谢。你能告诉我如何在 ".action-" 之后允许大写、数字和另一个 "-",我有一些带有数字、大写和双 "-" 的类,例如"action-super-admin{" , "action-Model-Cat1{" - 非常感谢! :)
    • @Omar 我更新了正则表达式以匹配操作后的所有内容,包括破折号和大写字符(这也将匹配无效的 CSS)。
    • 我只允许使用数字、大写字符、下划线和连字符(这是可能出现在这里的唯一有效的 css 字符)。只需将[a-z] 更改为[\w-][^:] 表示除“:”之外的任何内容,可能包括“–”或“÷”等内容。
    猜你喜欢
    • 2015-04-30
    • 1970-01-01
    • 1970-01-01
    • 2011-05-08
    • 1970-01-01
    • 2014-12-07
    • 1970-01-01
    • 1970-01-01
    • 2012-06-27
    相关资源
    最近更新 更多