【发布时间】:2010-11-18 10:49:26
【问题描述】:
假设我有一个这样的网址:
http://www.mysite.com/forum/board1/sub-forum/topics/123
在 PHP(不能使用 HTAccess)中是否有一种简单的方法来获取该 URL 并提取 board1、sub-forum、topics 和 123,以便我可以在数据库中使用它们?是否有任何内置函数或者我必须自己编写函数?
谢谢,
詹姆斯
【问题讨论】:
假设我有一个这样的网址:
http://www.mysite.com/forum/board1/sub-forum/topics/123
在 PHP(不能使用 HTAccess)中是否有一种简单的方法来获取该 URL 并提取 board1、sub-forum、topics 和 123,以便我可以在数据库中使用它们?是否有任何内置函数或者我必须自己编写函数?
谢谢,
詹姆斯
【问题讨论】:
explode('/', getenv('REQUEST_URI'));
如果您的环境碰巧在上述值中包含查询字符串部分,这里有一个巧妙的解决方法:
explode('/', strtok(getenv('REQUEST_URI'), '?'));
【讨论】:
您可以,但如果不重定向请求,您的网络服务器只会为不存在的路径返回 404 错误。
但是,您可以使用http://your.site.com/index.php/foo/bar/baz 之类的网址,然后将网址拆分为@pestaa 所说的部分,然后您可以将其解析为参数值。
【讨论】:
这是取自我的 MVC http://www.phpclasses.org/package/6363-PHP-Implements-the-MVC-design-pattern.html
这个链接现在已经过时了,我刚刚更新了它,所以它没有 MVC 的东西,这可以用 getLoadDetails($_URL); 调用。 amd $_URL 将与 $_GET 完全相同,只是它从文件夹路径获取数据。
function getLoadDetails(&$_URL){
$filePath = $_SERVER['REQUEST_URI'];
$filePath = explode("/", $filePath);
for($i = 0; $i < count($filePath); $i++){
$key = $filePath[$i];
$i++;
$val = $filePath[$i];
$keyName = urldecode($key);
$_URL[$keyName] = urldecode($val);
}
}
我确实有一个问题,如果您不能使用 HTACCESS,您打算如何处理文件夹路径,请不要告诉我您的系统将为每个 URL 创建文件夹路径和索引文件,这会破坏您的服务器速度和你的主人会因此恨你的。
【讨论】: