我的CSS文件包含许多标签,一些字符串:
p{
margin:10px 0;
padding:0;
}
h1,h2,h3,h4,h5,h6{
display:block;
margin:0;
padding:0;
}
我试着这个:
#content p{
margin:10px 0;
padding:0;
}
#content h1,
#content h2,
#content h3,
#content h4,
#content h5,
#content h6{
display:block;
margin:0;
padding:0;
}
我尝试找到这样的:([^\n|,{]*\n+)
但获取标签的主体,但不是标签的名称。
我的想法 - 我需要找到}
和\n
或,
答案 0 :(得分:0)
preg_replace_callback是你的朋友:
$css = <<<EOD
p{
margin:10px 0;
padding:0;
}
h1,h2,h3,h4,h5,h6{
display:block;
margin:0;
padding:0;
}
EOD;
$result = preg_replace_callback(
'/\n?([\w,\h]+)(?=\{)/',
function ($m) {
$l = preg_replace('/\w+\h*,?/', "#content $0\n",$m[0]);
return $l;
},
$css
);
echo $result;
<强>输出:强>
#content p
{
margin:10px 0;
padding:0;
}
#content h1,
#content h2,
#content h3,
#content h4,
#content h5,
#content h6
{
display:block;
margin:0;
padding:0;
}
<强>解释强>
\n? : optional linefeed
( : start group 1
[\w,\h]+ : 1 or more word character or horizontal space
) : end group
(?=\{) : positive lookahead, make sure we have a curly brace after
第二个正则表达式:
\w+ : 1 or more word character
\h* : 0 or more horizontal space
,? : optional comma