* Author:[email protected]
* My blog:http://blog.teamhaka.com
*
*/
需求:對css文件中內容的排列進行調整
/* 待排序的字符串 */
$css_str = <<< HTML
a{background-color:#fff}
form{font-size:15px;}
p{color:red}
body{background-image:url(1.png);}
HTML;
希望的順序:
$css_str = <<< HTML
body{background-image:url(1.png);}
p{color:red}
a{background-color:#fff}
form{font-size:15px;}
HTML;
代碼:
$tmp = split(“[\r\n]+”, $css_str); //轉換成數組(待排序的數組)
/* 確定排序規則(包含html的應該排在包含body的前面,當然後面也行) */
$arr_sort_rule = array(‘html’, ‘body’, ‘p’, ‘a’, ’span’, ‘form’);
foreach($tmp as $v){
$r[] = array_search(preg_replace(‘/(\w+).*/is’, ‘$1′, $v), $arr_sort_rule);
/***********************
$a = preg_replace(‘/(\w+).*/is’, ‘$1′, $v);//提取$css_str中每一行剛開頭的字符串
array_search($a, $arr_sort_rule);//在排序規則數組中,查找$a,找到則返回排序規則數組中所對應的鍵
這樣$r這個數組中的值就是一串數字了。
************************/
}
array_multisort($r, $tmp); //對$r的值進行排序的同時,將$tmp數組的值也一併排序(可以參見array_multisort函數), 從而達到按自定義的$r規則排序數組$tmp
echo join(PHP_EOL, $tmp);