Php 使用preg\u replace\u回调对属性进行排序
所以。。。所有属性都已完全排序 但是 如何将它们替换(/merge)回原来的$css值 这段代码几乎是不言自明的,但我已经添加了我希望得到的东西,以防。。。此处需要进行小调整:)Php 使用preg\u replace\u回调对属性进行排序,php,css,function,explode,preg-replace-callback,Php,Css,Function,Explode,Preg Replace Callback,所以。。。所有属性都已完全排序 但是 如何将它们替换(/merge)回原来的$css值 这段代码几乎是不言自明的,但我已经添加了我希望得到的东西,以防。。。此处需要进行小调整:) 您正在匹配CSS选择器,但没有将其添加回返回值中——它只是被回调函数替换 因此,您需要做的是捕获这些部分,并从回调中返回它们,如下所示: echo“”。 preg_replace_回调('~(.*?{)(.*?(})~s',函数($match){ 返回$match[1].mySort($match[2])。$match
您正在匹配CSS选择器,但没有将其添加回返回值中——它只是被回调函数替换 因此,您需要做的是捕获这些部分,并从回调中返回它们,如下所示:
echo“”。
preg_replace_回调('~(.*?{)(.*?(})~s',函数($match){
返回$match[1].mySort($match[2])。$match[3];
}
,$css)
.'';代码>是的,我知道,这正是我要问的;)是的,但是$match[0]返回属性和cssI的未排序选择器。作为一个具体示例,我添加了一个代码片段,我不使用match[0],我单独捕获其他位并连接它们。Opps:)是的!你完全正确!!!棒 极 了非常感谢你!!!!
<?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;
}