2 回答

TA贡献1869条经验 获得超4个赞
由于您标记了 ,我们可以进行一些字符串处理以使正则表达式更简单一些,我们可以只匹配单个样式并忽略所有其他不遵循此属性的人。PHP.some_class{some_props}
我们可以忽略所有空格,新行,只收集字符串中的文本,每个样式之间都有一个空格作为分隔符。现在,我们可以在每个属性上爆炸,看看它是否与我们想要的样式相匹配,该样式具有属性,并且仅收集这些属性并在以后内爆它们。
片段:
<?php
$str = '.class-1,
.class-2,
class-3 {
}
.class-4,
class-5 {
}
.class-6,
class-7 {}
.not-empty-1 {font-size: 12;}
.not-empty-2 {
font-size: 12;
}
.not-empty-3 {
font-size: 12;margin-top:25px;
}';
$new_str = '';
for($i=0;$i<strlen($str);++$i){
if(strlen(trim($str[$i])) === 0) continue; // skip new lines,spaces, line feeds etc
$new_str .= $str[$i];
if($str[$i] == '}') $new_str .= ' ';
}
$results = [];
foreach(explode(" ",$new_str) as $css_style){
if(preg_match('/^(.+?)\{(.+?)\}$/',$css_style,$matches)){
$results[] = implode("\n",[$matches[1],"{\n ".$matches[2]."\n}"]);
}
}
echo implode("\n\n",$results);
演示:https://3v4l.org/67mXE
- 2 回答
- 0 关注
- 131 浏览
添加回答
举报