📅  最后修改于: 2023-12-03 14:45:22.158000             🧑  作者: Mango
在 Web 开发过程中,我们经常需要从 URL 中获取特定的参数,这时候就可以使用 GET 方法获取 URL 中的参数。在 PHP 中,我们可以通过 $_GET
超全局数组来获取 URL 中的参数。
GET 请求是通过 URL 传递数据的一种请求方式。GET 请求不像 POST 请求那样将请求数据封装在请求体中,而是将请求参数直接拼接在 URL 中。GET 请求通常用于获取数据,因为 GET 请求将会以明文形式将请求参数暴露在 URL 中,所以不适合用于敏感数据的传输。GET 请求的 URL 格式如下:
http://example.com/page.php?id=123&name=foo
其中 ?
后面的参数是请求参数,不同的参数之间以 &
符号分隔,参数名和参数值之间以 =
符号分隔。
当我们收到一个 GET 请求时,我们可以通过 $_GET
超全局数组获取 URL 中的参数。例如,假设我们已经收到一个 GET 请求 http://example.com/page.php?id=123&name=foo
,我们可以通过以下方式获取 URL 中的参数:
$id = $_GET['id']; // 123
$name = $_GET['name']; // "foo"
注意,当 URL 中的参数不存在时,使用 $_GET
获取对应的参数将会导致 PHP 警告。为了避免这个问题,我们应该先判断对应的参数是否存在:
if (isset($_GET['id'])) {
$id = $_GET['id'];
} else {
// 参数不存在
}
URL 中的参数需要进行编码,否则容易导致参数值错误。PHP 提供了 urlencode()
函数和 urldecode()
函数来进行 URL 编码和解码。例如,以下代码将字符串 "Hello, world!" 编码成了 "Hello%2C+world%21":
$str = urlencode("Hello, world!"); // "Hello%2C+world%21"
需要注意的是,+
符号在 URL 中代表空格,所以当参数值中存在空格时,将会被自动转换成 +
符号。例如,以下代码将字符串 "Hello world!" 编码成了 "Hello+world%21":
$str = urlencode("Hello world!"); // "Hello+world%21"
<?php
if (isset($_GET['id'])) {
$id = $_GET['id'];
} else {
$id = 0;
}
$name = "";
if (isset($_GET['name'])) {
$name = $_GET['name'];
}
echo "ID: " . $id . "<br>";
echo "Name: " . $name . "<br>";
?>
以上代码演示了如何使用 $_GET
获取 URL 中的参数,并对不存在的参数做了处理。可以通过如下 URL 进行测试:
http://example.com/page.php?id=123&name=foo