所以...所有属性都已经完美排序
BUT
如何将它们替换(/合并)到原始的$ css值?
这段代码几乎是自我解释的,但我已经添加了我希望得到的东西,以防万一...这里需要小的调整:)
<?php
function mySort($arr) {
$arr = explode( ";" , $arr);
sort($arr);
array_shift($arr);
$returnMe = NULL;
foreach ($arr as $key) {
$returnMe .= $key.';';
}
unset($arr);
return $returnMe."\r\n";
}
$css = <<<EOF
body {
z-index:9;
padding:0;
margin:0;
line-height:10px;
}
p {
z-index: 9;
font-size: 10px;
}
h1,h2,h3,h4,h5,h6 {
z-index: 2;
padding: 0;
margin: 0;
font-size: 100%;
border: 0 none;
}
EOF;
echo '<pre>'.
preg_replace_callback( '~.*?{(.*?)}~s',
function ($match) {
return mySort( $match[1] );
}
,$css )
.'</pre>';
我期待得到:
body {
line-height:10px;
margin:0;
padding:0;
z-index:9;
}
p {
font-size: 10px;
z-index: 9;
}
h1,h2,h3,h4,h5,h6 {
border: 0 none;
font-size: 100%;
margin: 0;
padding: 0;
z-index: 2;
}
答案 0 :(得分:0)
您正在匹配CSS选择器,但不会将其添加回返回的值 - 它只是被回调函数替换
所以你需要做的就是捕获这些部分,并从回调中返回它们,如下所示:
echo '<pre>'.
preg_replace_callback( '~(.*?{)(.*?)(})~s', function ($match) {
return $match[1] . mySort( $match[2] ) . $match[3];
}
,$css )
.'</pre>';