0

我正在尝试通过单个入口点加载我的整个网站,index.php?uri
我的目标是拥有漂亮干净的网址,但到目前为止我已经想出了......

domain.com/section-name/page-of-that-section

所以第一部分将加载该部分的类/文件邮件、用户、帐户等)

第二部分将加载该部分页面的类/页面

到目前为止,这非常简单明了。对我来说棘手的部分是某些页面会有一个ID 号(用户 ID、消息 ID、博客 ID、论坛 ID、论坛帖子 ID、论坛主题 ID 等),这将用于在数据库的ID号。

接下来,一些页面还会有一个用于分页的页码。

因此,有时会出现页码,有时不会出现页码,与 ID 号相同,具体取决于它所在的部分。

我正在寻找示例、建议、帮助获取页码和 ID 号部分工作,我需要能够获取它们并将它们分配给变量$page_number$id_number

下面是我到目前为止的代码以及我需要访问的一些示例 url。我不想为此使用现有的框架,如果可以的话,请提供帮助我认为我已经接近让它工作了。

现在我已经在 id 号码前添加了 id/ 和 page/ 在寻呼号码前,这可以更改为任何内容(即;id-423423 page-23 page/23 page23 ​​p/23)只要我能获取要存储到 PHP 中的变量的数字

<?php
//get uri
$uri = isset( $_GET['uri'] ) ? $_GET['uri'] : null;

//put uri into array, everything in between '/' will be an array value
$uri1 = explode('/', $uri);

//the first array value will be the SECTION name/class
$section_name = $uri['0'];

//the second array value will always be the PAGE name/class
$page_name = $uri['1'];

//Now some pages will have numbers in the uri
// some are id numbers for things such as a message ID, users ID, comment ID, photo ID, blog ID
// then to complicate it even more sometimes, pages will need paging so will also have a page number in the uri
// I am looking for a way to detect if there is a ID number or page number in uri's for example like listed below.
// right now I have added id/ in front of id numbers and page/ in front of a paging number, this could be changed to anything **(ie; id-423423 page-23 page/23  page23 p/23)** 

mail/inbox/
mail/inbox/page/12
mail/message/id/3432435

users/online/
users/online/page/234
users/profile/id/42234
users/comments/id/42234
users/comments/id/42234/page/3

blogs/list/id/42234
blogs/list/id/42234/page/25
blogs/viewpost/id/1323/             
blogs/create/
blogs/edit/id/34453353

?>
4

1 回答 1

2

最简单的方法是创建一个路由系统,使用正则表达式是一件很容易的事。你也可以使用一些开源的东西:
http ://robap.github.com/php-router/

例如,这是我的(就像一瓶伏特加酒一样简单,但可以工作):

// for urls like http://mysite.com/1 or http://mysite.com/29 (any digit)
$ROUTE['(\d*)'] = 'pages/showPage/$1' ;
// for url http://mysite.com/admin/new-page
$ROUTE['admin\/new-page'] = 'pages/addPage' ;

function get_route($uri) {
    global $ROUTE ;
    $routes = $ROUTE ;

    foreach ($routes as $rUri => $rRoute) {
        if (preg_match("#^{$rUri}$#Ui", $uri)) {
            $route = preg_replace("#^{$rUri}$#Ui", $rRoute, $uri) ;
            break ;
        }
    }

    $route = explode('/', $route) ;
    $return['controller'] = array_shift($route) ;
    $return['action'] = array_shift($route) ;
    $return['params'] = empty($route) ? array() : $route ;

    return $return ;
}

//testing for http://mysite.com/2
$route = get_route( $_GET[ 'uri' ] ) ;
var_dump( $route ) ;
于 2011-01-19T01:57:51.523 回答