0

所以我想我需要为此提交一个新问题......

这是我的老问题:PHP - 获取路径减去根

我需要一种 PHP 方法来将 URL 设为以下任何一种......

http://kenthomes.net/plan_detail.php?mod=39
http://kenthomes.net/Amelia-Cove

离开我之后得到一切……

"plan_detail.php?mod=39" // If there is no alias for that page

或者

"Amelia-Cove" // If that page has an alias being applied

实际上,由于别名的原因,它们是同一个页面,但并非所有这些页面都有与之关联的别名,例如...

http://kenthomes.net/plan_detail.php?mod=52

不像……

http://kenthomes.net/Amelia-Cove

目前我正在使用...

trim($_SERVER['REQUEST_URI'],'/')

这给了我...

"Amelia-Cove" // Which is fine.

或者

"plan_detail.php" // Which is not okay.

我需要..

"Amelia-Cove" // Which is fine.

或者

"plan_detail.php?mod=39" // Which is fine.

我该怎么做呢?

4

6 回答 6

5

您可以通过以下方式获取 URL 的所有部分parse_url()

例如;

$parts = parse_url('http://kenthomes.net/plan_detail.php?mod=39');

print_r($parts);

应该给你这样的东西:

Array
(
    [scheme] => http
    [host] => kenthomes.net
    [path] => /plan_detail.php
    [query] => mod=39
)

您可以使用它来创建自己的 URL,其中包含您需要的部分

于 2013-04-05T22:20:19.740 回答
1

$_SERVER["REQUEST_URI"]仅包含 URI。

当你还想要 之后的部分时?,你也需要使用$_SERVER["QUERY_STRING"]

利用:

trim($_SERVER['REQUEST_URI'] . $_SERVER['QUERY_STRING'], '/');
于 2013-04-05T22:22:38.300 回答
0

parse_url,如果你只想要最右边的,使用str_split就足够了。

$data = parse_url($url, PHP_URL_PATH);

应该够了。

否则,如果响应当前请求,$_SERVER['REQUEST_URI']可能会起作用,因为那是整个 URI。

于 2013-04-05T22:25:29.260 回答
0

你可以试试这个:

$uri = $_SERVER['REQUEST_URI'];
$qs = $_SERVER['QUERY_STRING'];

echo trim($uri . $qs, '/');
于 2013-04-05T22:26:32.003 回答
0

您可以通过以下方式获取查询字符串(问号后的位)$_SERVER['QUERY_STRING']

于 2013-04-05T22:21:44.757 回答
0

附加. $_SERVER['REQUEST_URI']_$_SERVER['QUERY_STRING']

PHP: $_SERVER - 手动

于 2013-04-05T22:21:46.403 回答