Php 有一种快速的方法可以为所有CSS类添加前缀&;ID';s
我需要快速为我所有的类和ID添加前缀,这是一个相当大的CSS文件。我在想一个快速的正则表达式字符串,但到目前为止我失败了。有什么想法吗 我尝试过一些简单的事情,比如:Php 有一种快速的方法可以为所有CSS类添加前缀&;ID';s,php,css,regex,css-selectors,Php,Css,Regex,Css Selectors,我需要快速为我所有的类和ID添加前缀,这是一个相当大的CSS文件。我在想一个快速的正则表达式字符串,但到目前为止我失败了。有什么想法吗 我尝试过一些简单的事情,比如: \#([A-z0-9]+) { 这将让我用#前缀U$1替换,但它不考虑: #id { #id.class #id, 等等。我不能只替换所有的#[a-z0-9],因为它会尝试获取背景色等等 我还需要替换所有的类,这让我更加困惑。您可以搜索: \.(?[\u a-zA-Z]+[\u a-zA-Z0-9-]*)[^}]+{ 应该找
\#([A-z0-9]+) {
这将让我用#前缀U$1替换,但它不考虑:
#id {
#id.class
#id,
等等。我不能只替换所有的#[a-z0-9],因为它会尝试获取背景色等等
我还需要替换所有的类,这让我更加困惑。您可以搜索:
\.(?[\u a-zA-Z]+[\u a-zA-Z0-9-]*)[^}]+{
应该找到所有的类名和id名
使用RegExr时,请使用以下命令:
(?我会这样说:
/([#\.])([^\d][a-z0-9-_]+)/ Replace with
$1PREFIX_$2
不过,请注意,它也会捕捉颜色(如果使用小写字母),我现在正在研究一种解决方法。您可以尝试此[\w]+\.?([\w\-]+\s?
它可以处理这些问题
#id {
#id.class {
#id, #otherId {
#class-dashed
#class_dashed
ul li:after {content: " #id.class { ";}
.class {background-color: #fff250}
#id.class {color:#ff}
还发现了一个很好的方法来使用不同的选项。颜色仍然会有问题,但你不能真正摆脱它,因为它们遵循与ID相同的规则
更新
从结果中排除:
,以使颜色不匹配
(?您需要一个支持负查找的正则表达式引擎,对php不太熟悉,所以不知道它是否有,但我可以想象它有。它也将匹配背景:#FFF024;
仍然-1,也将匹配{,导致css失去它的花括号。为什么它会匹配{
?{
在()
之外,我不知道,但它确实存在。你自己测试它。你用什么来测试它?-1,也将替换ulli:after{content:“#id.class{”}
不需要
内部的[]
。另外,在#类虚线
上失败,这是完全有效的。另外,捕获{
并将其删除。使用您自己的工具进行测试。-1,还将在{content:“{id.class{”}之后替换ul li:从结果来看?@Talasan Nicholson:是的,有负面的回顾,请看上面的更新。我在互联网上搜索过,这是我发现的唯一一个真正有效的正则表达式!做得好,伙计。@MattiLyraregex不是CSS解析器,所以如果你在其中找不到真正严格的字符串模式,你将无法使用正则表达式,如果你想使用它,这很难说不要共享整个CSS。也许在HTML中重命名类比在CSS中重命名更容易?@hakre我仍然需要重命名类和ID来保留样式。