处理 PHP URL 和 GET 请求
Handling PHP URL and GET requests
我目前正在通过展开 URL:
来解析任何给定的 url,例如 example.com/page/1
或 example.com/api/info/1
$REQ = explode('/', $_SERVER['REQUEST_URI']);
array_shift($REQ);
$REQ = array_filter($REQ, function($value) { return $value !== ''; });]
然后像这样访问它在数组中的元素:
if (count($REQ) > 1 && $REQ[0] == 'page' && $REQ[1] == '1'){
\ show page 1
}
但是我如何处理(并以相同的方式通过数组访问)还包含 GET 元素的 url,例如 example.com/page?id=1
或 example.com/api/info?=hello
?
我正在使用 nginx 并尝试如下文件:
location / {
index index.php;
try_files $uri /index.php?$query_string;
}
您可以通过 parse_url
函数解析 URL,也可以使用 parse_str
函数解析查询参数并提取所有查询参数。
$url = 'https://example.com/api/info?param1=hello¶m2=wrold';
$url_parts = parse_url($url);
var_dump($url_parts);
parse_str($url_parts['query'], $query_params);
var_dump($query_params);
输出:
array(4) {
["scheme"]=>
string(5) "https"
["host"]=>
string(11) "example.com"
["path"]=>
string(9) "/api/info"
["query"]=>
string(25) "param1=hello¶m2=wrold"
}
array(2) {
["param1"]=>
string(5) "hello"
["param2"]=>
string(5) "wrold"
}
我目前正在通过展开 URL:
来解析任何给定的 url,例如example.com/page/1
或 example.com/api/info/1
$REQ = explode('/', $_SERVER['REQUEST_URI']);
array_shift($REQ);
$REQ = array_filter($REQ, function($value) { return $value !== ''; });]
然后像这样访问它在数组中的元素:
if (count($REQ) > 1 && $REQ[0] == 'page' && $REQ[1] == '1'){
\ show page 1
}
但是我如何处理(并以相同的方式通过数组访问)还包含 GET 元素的 url,例如 example.com/page?id=1
或 example.com/api/info?=hello
?
我正在使用 nginx 并尝试如下文件:
location / {
index index.php;
try_files $uri /index.php?$query_string;
}
您可以通过 parse_url
函数解析 URL,也可以使用 parse_str
函数解析查询参数并提取所有查询参数。
$url = 'https://example.com/api/info?param1=hello¶m2=wrold';
$url_parts = parse_url($url);
var_dump($url_parts);
parse_str($url_parts['query'], $query_params);
var_dump($query_params);
输出:
array(4) {
["scheme"]=>
string(5) "https"
["host"]=>
string(11) "example.com"
["path"]=>
string(9) "/api/info"
["query"]=>
string(25) "param1=hello¶m2=wrold"
}
array(2) {
["param1"]=>
string(5) "hello"
["param2"]=>
string(5) "wrold"
}