function str_replace_limit($search, $replace, $subject, $limit = - 1) {
if (is_array($search)) {
foreach ($search as $k => $v) {
$search[$k] = '/' . preg_quote($search[$k], '/') . '/';
}
}
else {
$search = '/' . preg_quote($search, '/') . '/';
}
return preg_replace($search, $replace, $subject, $limit);
}
function routeUrl($url, $vars) {
$route = C('URL_ROUTE_RULES');
$route_vars = implode(C('URL_PATHINFO_DEPR'), $vars);
foreach ($route as $k => $v) {
if (stristr($v, $url) !== false) {
if (stripos($k, '/', 0) === 0) { //正则路由
$k1 = trim($k, '/^$');
$route_prefix = stristr($k1, '(', true);
$preg = '/(\(.*\))/U';
preg_match_all($preg, $k1, $arr);
$str = str_replace_limit($arr[1], $vars, $k1, 1);
if(strpos($str,'\\')!==false){
$str=str_replace('\\','',$str);
}
return __APP__ . C('URL_PATHINFO_DEPR') . $str . C('TMPL_TEMPLATE_SUFFIX');
}
else { //规则路由,不支持静态路由
if (stristr($k, ':') == false && stristr($k, '/') == false) {
return __APP__ . C('URL_PATHINFO_DEPR') . $k . C('TMPL_TEMPLATE_SUFFIX');
}
else {
$route_prefix = stristr($k, '/', true);
return __APP__ . C('URL_PATHINFO_DEPR') . $route_prefix . C('URL_PATHINFO_DEPR') . $route_vars . C('TMPL_TEMPLATE_SUFFIX');
}
}
}
else {
continue;
}
}
}2.2.在U()方法内 //url组装上面加if ($vars['p'] != '[PAGE]') { //分页路由由Page类处理,参数名为默认'p'
$route_url = routeUrl($url, $vars);
if ($route_url !== null) {
return $route_url;
}
}示例:'/^nav_(\d{0,5})$/' =>'Home/Index/nav?id=:1',下面方法都可以使用U('/nva_3');
U('Home/Index/nav','id=3');
U('Home/Index/nav',array('id'=>3));最后生成的url都是 域名/nav_3.html$this->url = U(ACTION_NAME, $this->parameter);改为$this->url = U(MODULE_NAME . C('URL_PATHINFO_DEPR') . CONTROLLER_NAME . C('URL_PATHINFO_DEPR').ACTION_NAME, $this->parameter);相关:http://www.thinkphp.cn/topic/36606.html
ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。