// URL组装 支持不同模式和路由 2010-2-5 更新
function U($url,$params=false,$redirect=false,$suffix=true) {
//普通模式
if(false==strpos($url,'/')){
$url .='//';
}
//填充默认参数
$urls = explode('/',$url);
$app = ($urls[0]) ? $urls[0] : APP_NAME;
$mod = ($urls[1]) ? $urls[1] : 'Index';
$act = ($urls[2]) ? $urls[2] : 'index';
//组合默认路径
$site_url = SITE_URL.'/index.php?'.C('VAR_APP').'='.$app.'&'.C('VAR_MODULE').'='.$mod.'&'.C('VAR_ACTION').'='.$act;
//填充附加参数
if($params){
if(is_array($params)){
$params = http_build_query($params);
}
$site_url .= '&'.$params;
}
//开启路由和Rewrite
if(C('URL_ROUTER_ON')){
//载入路由
$router_ruler = C('router');
$router_key = $app.'/'.ucfirst($mod).'/'.$act;
//路由命中
if(isset($router_ruler[$router_key])){
//填充路由参数
$site_url = SITE_URL.'/'.$router_ruler[$router_key];
//填充附加参数
if($params){
//解析替换URL中的参数
parse_str($params,$r);
foreach($r as $k=>$v){
if(strpos($site_url,'['.$k.']')){
$site_url = str_replace('['.$k.']',$v,$site_url);
}else{
$lr[$k] = $v;
}
}
//填充剩余参数
if(is_array($lr) && count($lr)>0){
$site_url .= '?'.http_build_query($lr);
}
}
}
}
//输出地址或跳转
if($redirect){
redirect($site_url);
}else{
return $site_url;
}
}
tp,U函数改造
最新推荐文章于 2024-03-18 17:59:28 发布