示例原始CSS:
.sk-hybrid{}
.sk-hybrid header > .row,
.sk-hybrid > #content.row,
.sk-hybrid footer > .row{}
.sk-border-radius-sm{}
.sk-gradient-gray-sm{}
我想preg_replace .sk-whatever {到 .sk-whatever-i {的所有实例以及相同术语的所有实例后跟空格,例如**。sk-whatever ** to **。sk-whatever-i **
基本上我想要实现的是,编写一些PHP代码来解析我的CSS文件,将“-i”添加到我的 .sk-someword 类的所有实例中。所以我可以将!important声明附加到规则集中,但这很容易。
我只需要regX来添加“-i”。请注意.sk-之间可能有任何特殊字符。
.sk-some-class-term(space)
或
.sk-some-class-term{
对于regX,我是个懒散的人。我很确定其他人可以轻松写出来。我不能。请帮忙? :(
我的示例CSS的结果应该是:
.sk-hybrid-i{}
.sk-hybrid-i header > .row,
.sk-hybrid-i > #content.row,
.sk-hybrid-i footer > .row{}
.sk-border-radius-sm-i{}
.sk-gradient-gray-sm-i{}
答案 0 :(得分:1)
匹配
(\.sk(-\w+)+)
并替换为$1-i
:http://regex101.com/r/nC8kU1/1
然而,更好的方法是使用专用工具,与正则表达式不同,它“理解”基础语言。对于php,有https://github.com/sabberworm/PHP-CSS-Parser,请注意Prepend id to selectors示例 - 它几乎就是您要找的内容。
答案 1 :(得分:1)
此正则表达式适用于您的目的:
^(\.sk-\w+(?:[^\{\s,>]+))
<强>解释强>
^
匹配字符串的开头(
开始捕获组
\.sk-\w+
匹配.sk-
后跟字母或数字(?:
开始非捕获组
[^\{\s,>]+
匹配任何非空白,非{
,非,
或非>
字符)
结束非捕获组)
结束捕获组答案 2 :(得分:0)
PHP执行您要求{c}设置为{c}的地方。
$cssString
虽然如果你在linux上运行,只需使用sed
$cssString = preg_replace ( '(\.sk-\w+(?:[^\{\s,>]+))', '$1-i', $cssString);