/**
* Author:abel1314520@gmail.com
* My blog:http://blog.teamhaka.com
*
* Author:abel1314520@gmail.com
* 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);