您的位置:首页 > 其它

自定义规则排序数组的一个例子

2011-07-17 22:25 260 查看
/**
* 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 = <<< HTMLbody{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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐