如何使用请求URL提取值

时间:2012-06-01 01:19:18

标签: php html

我的$_SERVER['REQUEST_URI']类似于/ advt / upload / siteid / 1。我需要从指定的路径中检索“1”。我怎么能做preg match或其他什么?

谢谢!

3 个答案:

答案 0 :(得分:3)

您想要最后一个路段吗?简单!

$lastPathSegment = basename($_SERVER['REQUEST_URI']);

CodePad

您可能希望使用rtrim($_SERVER['REQUEST_URI'], '/')来确保路径没有尾部斜杠。

还有很多其他方法可以做到这一点。假设$uri = rtrim($_SERVER['REQUEST_URI'], '/') ...

$lastPathSegment = end(explode("/", $uri));

CodePad

$lastPathSegment = ltrim(strrchr($uri, "/"), "/"); 

CodePad

$lastPathSegment = substr($uri, 1 + strrpos($uri, "/"));

CodePad

$lastPathSegment = preg_replace('/^.+\//', '', $uri);

CodePad

......还有更多。

答案 1 :(得分:1)

如果您想要最后一段:

$endSegment = basename($_SERVER['REQUEST_URI']);

否则,如果它不是最后一个,但你知道值的索引

$pieces = explode("/", $_SERVER['REQUEST_URI']);

$selectedSegment = $pieces[3];

答案 2 :(得分:0)

您可以使用拆分功能,即

list($sec1,$sect2,$sect3,$sect4) = explode("/", $_SERVER['REQUEST_URI']);

其中$ sect4是你的数字,或者只是一个直的数组

$uri = explode("/", $_SERVER['REQUEST_URI']);

$num = $uri[3];

您可能还想查看正则表达式

preg_match('/(?P<sect1>\w+)\(?P<sec2>\w+)\(?P<sect3>\w+)\ (?P<digit>\d+)/', $_SERVER['REQUEST_URI'], $matches);

print_r($matches);

有关preg matches preg_match

的更多信息,请参阅此链接