精品久久看,欧美成人久久一级c片免费,日本加勒比在线精品视频,国产一区二区三区免费大片天美,国产成人精品999在线,97理论三级九七午夜在线观看

當前位置: 首頁編程開發(fā)PHP → 關于php url路由的實現(xiàn)

關于php url路由的實現(xiàn)

更多

這篇文章提供分享給大家,是關于php url路由的實現(xiàn),下面的詳細的解析,希望對各位有所幫助。

1.符合規(guī)則定義的偽靜態(tài)訪問路徑解析

對于"test.php/user/lists/normal/id/2.html" 可解析為
control = user,action = lists,filter = normal,order = id,curPage = 3

對于"test.php/users/lists.html" 可解析為
control = user,action = lists,filter = all,order = '',curPage = 1 可取得規(guī)則定義中的默認值

2.不符合規(guī)則定義的偽靜態(tài)路徑解析

action,control 不符合規(guī)則
對于"test.php/users/lists/all/id1/1.html" 報錯
試圖訪問不存在的頁面

不符合匹配模式
對于"test.php/user/lists/all/id1/1.html" 可解析為
control = user,action = lists,filter = all,order = '',curPage = 1
可取得不符合匹配模式項目的默認值,上例 order 不符合匹配模式

定義路由規(guī)則時可以定義默認值,當在pathinfo中找不到匹配的值,能取得默認值

<?php

// url 路由規(guī)則定義

$urlRule = array(

    'user' => array(            // control

        'lists' => array(       // action

            //'名稱'    => '默認值,值模式匹配'

            '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 為默認值時 

        if ($GLOBALS['control'] == 'index' && $GLOBALS['action'] == 'index'){

                $GLOBALS['queryString'] = $queryString;

                return true;

        }

        global $urlRule;

        if (isset($urlRule[$GLOBALS['control']][$GLOBALS['action']])){

                $aActionRule = &$urlRule[$GLOBALS['control']][$GLOBALS['action']];

                foreach ($aActionRule as $key=>$val){

                        // 規(guī)則值為 '' 時

                        if ($val == '') {

                                $queryString[$key] = '';

                                continue;

                        }

                        if (isset($aQueryString[0])){

                                // 取得正則表達式

                                $pattern = '/'.substr($val, strpos($val, ',')+1).'/';

                                // 模式匹配

                                if (preg_match($pattern, $aQueryString[0])){

                                        // 取值

                                        $queryString[$key] = $aQueryString[0];

                                        // 彈出值

                                        array_shift($aQueryString);

                                }else {

                                        // 取默認值

                                        $queryString[$key] = substr($val, 0, strpos($val, ','));

                                }

                        }else {

                                // 取默認值

                                $queryString[$key] = substr($val, 0, strpos($val, ','));

                        }

                }

                $GLOBALS['queryString'] = $queryString;

        }else {

                throw new Exception('試圖訪問不存在的頁面');

        }

}

parseUrl();

var_dump($GLOBALS['control']);

var_dump($GLOBALS['action']);

var_dump($GLOBALS['queryString']);

?>

**
         * Pathinfo函數(shù)
         * 功能:將URL中的Pathinfo解析為$_GET全局變量
         * 返回值:解析成功返回true否則為fasle
         * 例如:http://hostname/page.php/argv/argc/a/1/b/2.html
         * 將會解析為$_GET['argv']='argc';$_GET['a']=1;$_GET['b']=3;
         */
        function pathinfo(){
                $pathinfo=explode('/',$_SERVER['PATH_INFO']);
                $count=count($pathinfo);
                for($foo=1;$foo<$count;$foo+=2){
                        $_GET[$pathinfo[$foo]]=($foo+2)==$count?array_shift(explode('.',$pathinfo[$foo+1])):$pathinfo[$foo+1];
                }
        }
        /**
         * rewrite函數(shù)
         * 功能:
         */
        Function rewrite($url=null){
                return REWRITE?$url.'.html':$_SERVER['PHP_SELF'].$url.'.html';
        }

熱門評論
最新評論
發(fā)表評論 查看所有評論(0)
昵稱:
表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
字數(shù): 0/500 (您的評論需要經過審核才能顯示)
主站蜘蛛池模板: 欧美日韩国产高清 | 毛片一级在线观看 | 国产小视频免费看 | 欧美操大逼视频 | 五月婷婷网址 | 久久99久久99 | 五月天久久久 | 欧美va亚洲va香蕉在线 | 精品国产日韩一区三区 | 五月婷婷开心综合 | 久久久久久久久综合 | 激情丁香六月 | 一级毛片免费视频观看 | 99精品热视频 | 欧美高清强视频 | 久久国产亚洲欧美日韩精品 | 国产伦久视频免费观看视频 | 日本不卡新2区 | 两性视频网站 | 国内精品久久精品 | 国产色片在线观看 | 国产精品综合在线 | 久久免费小视频 | 久久99国产精品成人欧美 | 欧美极品欧美日韩 | 国产精品无需播放器 | 国产成人久久精品一区二区三区 | 美女国产在线观看 | 免费二级c片在线观看a | 国产成人亚洲精品大帝 | 国产午夜亚洲精品不卡 | 国产精品欧美日韩精品 | 天天做天天爱天天影视综合 | 久久久久久国产精品视频 | 二区三区在线 | 2020年最新国产精品视频免费 | 善良的嫂子3在线播放 | 婷婷综合久久中文字幕蜜桃三 | 九九99国产精品视频 | 九九视频在线观看视频 | 国产福利不卡一区二区三区 |