代码之家  ›  专栏  ›  技术社区  ›  Bojangles Vincent Baillet

PHP从URL路径获取参数

  •  5
  • Bojangles Vincent Baillet  · 技术社区  · 14 年前

    假设我有这样一个网址:

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

    在PHP中有没有一种简单的方法(不能使用HTAccess)获取这个URL并提取 board1 , sub-forum , topics 123 例如,我可以在数据库中使用它们?是否有内置函数,或者我必须自己编写函数?

    谢谢,

    詹姆斯

    4 回复  |  直到 14 年前
        1
  •  11
  •   pestaa    14 年前
    explode('/', getenv('REQUEST_URI'));
    

    如果您的环境碰巧在上面的值中包含查询字符串部分,那么这里有一个简单的解决方法:

    explode('/', strtok(getenv('REQUEST_URI'), '?'));
    
        2
  •  3
  •   nikc.org    14 年前

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

    但是,您可以使用如下URL http://your.site.com/index.php/foo/bar/baz 然后将url拆分为@pestaa said这样的部分,然后可以将其解析为参数值。

        3
  •  2
  •   Barkermn01    14 年前

    这是从我的MVC http://www.phpclasses.org/package/6363-PHP-Implements-the-MVC-design-pattern.html

    链接现在已经过时了,我刚刚更新了它,所以它没有MVC的内容,这可以用getLoadDetails($u URL)调用;amd$u URL将与$u 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创建文件夹路径和索引文件,这将破坏你的服务器速度,你的主机会因此恨你。

        4
  •  1
  •   Gumbo    14 年前

    如果已经将web服务器配置为将这些请求发送到特定的PHP文件,则可以使用 parse_url explode 要获取请求的URI路径,然后将其分割为若干段:

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