PHP URL参数获取方式的四种例子


在PHP中,获取URL参数通常有几种常见的方式,这里我将给出四种示例来说明这些方式:

### 1. 使用`$_GET`超全局变量

这是最常见的方式,用于获取通过URL的查询字符串(即`?`后面跟着的参数)传递的变量。


<?php
// 假设URL是 http://example.com/page.php?name=John&age=30
echo "Name: " . $_GET['name'] . "<br>";
echo "Age: " . $_GET['age'];
?>

### 2. 使用`parse_url()`和`parse_str()`函数

如果URL作为字符串给出,并且你想要解析这个字符串来获取查询参数,你可以使用`parse_url()`来获取查询字符串部分,然后使用`parse_str()`来解析这些参数。


<?php
$url = "http://example.com/page.php?name=John&age=30";
$query = parse_url($url, PHP_URL_QUERY);
parse_str($query, $params);

echo "Name: " . $params['name'] . "<br>";
echo "Age: " . $params['age'];
?>

### 3. 使用`$_SERVER['QUERY_STRING']`

这种方式不直接解析查询字符串为数组,但它提供了完整的查询字符串,你可以根据需要自己解析它。


<?php
// 假设URL是 http://example.com/page.php?name=John&age=30
$queryString = $_SERVER['QUERY_STRING'];
// 这里你可能需要手动解析$queryString来获取参数值
// 例如,使用parse_str()方法
parse_str($queryString, $params);

echo "Name: " . $params['name'] . "<br>";
echo "Age: " . $params['age'];
?>

### 4. 使用URL重写和`$_REQUEST`

虽然这不是直接获取URL参数的方法,但URL重写(如Apache的mod_rewrite或Nginx的重写规则)可以将URL路径的一部分作为参数传递给PHP脚本,然后使用`$_REQUEST`(或`$_GET`、`$_POST`,取决于重写规则是如何配置的)来获取这些值。

注意:这里不直接展示URL重写配置,因为它依赖于服务器的配置。


<?php
// 假设通过URL重写,/user/John/30 被映射到 page.php 并设置了相应的GET参数
// 实际上,在PHP脚本中,你可能看不到这种URL重写的影响,因为服务器已经处理了它
// 但你可以像平常一样使用 $_GET 来获取这些参数
echo "Name: " . $_GET['name'] . "<br>"; // 假设'name'是重写后设置的参数之一
echo "Age: " . $_GET['age']; // 同上
?>

请注意,直接使用URL重写时,你可能不会直接看到URL中的参数名(如`name`和`age`),因为这些参数可能是通过URL路径的一部分动态设置的,并在服务器级别上解析为查询字符串参数。在PHP脚本中,你只需要像处理普通GET请求一样处理这些参数即可。