好的,可以说我有一个$css包含一些CSS代码的变量。我想做的是在每个选择器的前面添加一个特定的文本。因此,例如,以下代码:
#hello, .class{width:1px;height:1px;background-color:#AAA;}
div{font-size:1px}
input, a, span{padding:4px}
Run Code Online (Sandbox Code Playgroud)
将被转换为:
#someId #hello, #someId .class{ ... }
#someId div{ ... }
#someId input, #someId a, #someId span{ ... }
Run Code Online (Sandbox Code Playgroud)
我一直在尝试使用几个explode()s。但是,我无法有效完成任务。有什么想法吗?
谢谢!JCOC611
基于乔恩的建议,我编写了以下代码:
<?php
$prefix = '#someId';
$css = '#hello, .class{width:1px;height:1px;background-color:#AAA;}
div{font-size:1px}
input, a, span{padding:4px}';
$parts = explode('}', $css);
foreach ($parts as &$part) {
if (empty($part)) {
continue;
}
$subParts = explode(',', $part);
foreach ($subParts as &$subPart) {
$subPart = $prefix . ' ' . trim($subPart);
}
$part = implode(', ', $subParts);
}
$prefixedCss = implode("}\n", $parts);
echo $prefixedCss;
Run Code Online (Sandbox Code Playgroud)
要查看其是否有效,请参见http://codepad.org/bqRd83gu