在php case中获取网址查询参数

时间:2020-10-22 09:59:59

标签: php

我在下面的index.php文件中可以处理所有路由:

<!DOCTYPE html>
<html>
<body>

    <?php
    $request=$_SERVER['REQUEST_URI'];
switch($request){
    case '/': require __DIR__.'/index1.php';break;
    case '/home':require __DIR__.'/views/home.php';break;
    default: echo("wrong");}
?>
</body>
</html>

下面的文件是home.php:

<html>
<body>
<?php
$str=$_SERVER['QUERY_STRING'];
echo($str);
?>
</body>
</html>

在没有查询字符串的情况下,上述设置可以正常工作。但是,我将如何包括用户点击127.0.0.1/home?1234的条件。在这种情况下,任何case语句将变为无效,并且将返回错误。我将如何更改它,使其与查询字符串一起转到适当的路由?

谢谢!

2 个答案:

答案 0 :(得分:2)

请勿使用正则表达式或字符串函数。使用parse_url从URL提取路径(或几乎任何部分):

$path = parse_url("/home?1234", PHP_URL_PATH);
# $path will be "/home"
switch ($path) {
   ...

答案 1 :(得分:1)

使用explode

$uri = explode('?', $_SERVER['REQUEST_URI'], 2);
$str = $uri[0]