- 1. X-Router超級(jí)路由器(支持超多臺(tái)計(jì)算機(jī)同時(shí)上網(wǎng)的軟...
- 2. CrossLoop(實(shí)現(xiàn)異地屏幕共享的遠(yuǎn)程協(xié)助工具) V2.80...
- 3. phpMyAdmin(支持對(duì)數(shù)據(jù)庫(kù)進(jìn)行建立、復(fù)制,刪除數(shù)據(jù)等...
- 4. AirPort Utility for Mac (無(wú)線路由管理工具)V5.5....
- 5. AirPort Utility(蘋(píng)果無(wú)線路由管理工具)V5.5.3.2最...
- 6. QuickPHP V1.12.1(php腳本調(diào)試工具) 綠色免費(fèi)版
- 7. RouterPassView(從路由器找回丟失密碼的文件 ) V1....
- 8. 菊子曰(實(shí)現(xiàn)離線發(fā)布博客文章的工具) V4.0 G25 簡(jiǎn)體...
- 9. apwifi軟件無(wú)線路由器(提供高效安全的互聯(lián)網(wǎng)訪問(wèn)) ...
- 10. phpMyAdmin(支持對(duì)數(shù)據(jù)庫(kù)進(jìn)行完全操控) V3.4.2.0 F...
關(guān)于php url路由的實(shí)現(xiàn)
這篇文章提供分享給大家,是關(guān)于php url路由的實(shí)現(xiàn),下面的詳細(xì)的解析,希望對(duì)各位有所幫助。
1.符合規(guī)則定義的偽靜態(tài)訪問(wèn)路徑解析
對(duì)于"test.php/user/lists/normal/id/2.html" 可解析為
control = user,action = lists,filter = normal,order = id,curPage = 3
對(duì)于"test.php/users/lists.html" 可解析為
control = user,action = lists,filter = all,order = '',curPage = 1 可取得規(guī)則定義中的默認(rèn)值
2.不符合規(guī)則定義的偽靜態(tài)路徑解析
action,control 不符合規(guī)則
對(duì)于"test.php/users/lists/all/id1/1.html" 報(bào)錯(cuò)
試圖訪問(wèn)不存在的頁(yè)面
不符合匹配模式
對(duì)于"test.php/user/lists/all/id1/1.html" 可解析為
control = user,action = lists,filter = all,order = '',curPage = 1
可取得不符合匹配模式項(xiàng)目的默認(rèn)值,上例 order 不符合匹配模式
定義路由規(guī)則時(shí)可以定義默認(rèn)值,當(dāng)在pathinfo中找不到匹配的值,能取得默認(rèn)值
<?php
// url 路由規(guī)則定義
$urlRule = array(
'user' => array( // control
'lists' => array( // action
//'名稱(chēng)' => '默認(rèn)值,值模式匹配'
'filter' => 'all,^(all|normal|admin)$',
'order' => ',^-?[a-zA-Z_]+$',
'curPage' => '1,^[0-9]+$',
),
),
);
function parseUrl(){
$queryString = array();
$GLOBALS['control'] = 'index';
$GLOBALS['action'] = 'index';
if (isset($_SERVER['PATH_INFO'])){
//獲取 pathinfo
$aPathInfo = explode('/', substr($_SERVER['PATH_INFO'], 1, strrpos($_SERVER['PATH_INFO'], '.')-1));
// 獲取 control
$GLOBALS['control'] = $aPathInfo[0];
array_shift($aPathInfo);
// 獲取 action
$GLOBALS['action'] = (isset($aPathInfo[0]) ? $aPathInfo[0] : 'index');
array_shift($aPathInfo);
// 獲取 入口文件名
$GLOBALS['PHP_SELF'] = str_replace($_SERVER['PATH_INFO'], '', $_SERVER['PHP_SELF']);
$queryString = $aPathInfo;
}
parseQueryString($queryString);
}
function parseQueryString(array$aQueryString){
$queryString = array();
// control 與 action 為默認(rèn)值時(shí)
if ($GLOBALS['control'] == 'index' && $GLOBALS['action'] == 'index'){
$GLOBALS['queryString'] = $queryString;
return true;
- 1. ASP程序?qū)崿F(xiàn)自動(dòng)采集程序及入庫(kù)的實(shí)例代碼分享
- 2. ASP實(shí)現(xiàn)查看ASP文件源碼的函數(shù)代碼分享
- 3. 關(guān)于ASP實(shí)現(xiàn)上傳圖片功能的原理及示例說(shuō)明
- 4. ASP生成靜態(tài)網(wǎng)頁(yè)中實(shí)現(xiàn)閱讀次數(shù)的程序?qū)嵗a分享
- 5. 動(dòng)態(tài)網(wǎng)頁(yè)編程語(yǔ)言中的三大帝國(guó)ASP.JSP.PHP之間的較...
- 6. Yahoo Service實(shí)現(xiàn)天氣預(yù)報(bào)的實(shí)例代碼分享
- 7. 注冊(cè)表編輯器實(shí)現(xiàn)修改IE收藏夾位置的詳細(xì)步驟
- 8. Asp計(jì)算頁(yè)面執(zhí)行時(shí)間的實(shí)現(xiàn)方法分享
- 9. 用ASP應(yīng)用程序?qū)崿F(xiàn)自己的UrlDeCode的實(shí)例代碼分享
- 10. JS,ASP實(shí)現(xiàn)保存數(shù)據(jù)到XML文件的方法分享