PHP从URL路径中获取参数

时间:2010-11-18 10:49:27

标签: php url

说我有这样的网址:

http://www.mysite.com/forum/board1/sub-forum/topics/123

PHP中是否有一种简单的方法(不能使用HTAccess)来获取该URL并提取board1sub-forumtopics123以便我可以使用例如,他们在数据库中?有内置功能还是我必须自己编写?

谢谢,

詹姆斯

4 个答案:

答案 0 :(得分:11)

explode('/', getenv('REQUEST_URI'));

如果您的环境恰好包含上述值中的查询字符串部分,这里有一个简洁的解决方法:

explode('/', strtok(getenv('REQUEST_URI'), '?'));

答案 1 :(得分:3)

您可以,但如果没有重定向请求,您的网络服务器只会为不存在的路径返回404错误。

但是,您可以使用http://your.site.com/index.php/foo/bar/baz之类的网址,然后将网址拆分为@pestaa之类的部分,然后您可以将其解析为参数值。

答案 2 :(得分:2)

这取自我的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创建文件夹路径和索引文件,这将破坏你的服务器速度和你的主人会恨你。

答案 3 :(得分:1)

如果您已经将Web服务器配置为将这些请求发送到您的特定PHP文件,则可以使用parse_urlexplode获取然后将请求的URI路径拆分为其段:

$_SERVER['REQUEST_URI_PATH'] = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
$pathSegments = explode('/', $_SERVER['REQUEST_URI_PATH']);