2

My $_SERVER['REQUEST_URI'] is something like /advt/upload/siteid/1. I need to retreive that '1' from the specified path. How can I do preg match or anything else?

Thanks!

4

3 に答える 3

3

最後のパス セグメントが必要ですか? 簡単!

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

コードパッド

rtrim($_SERVER['REQUEST_URI'], '/')パスに末尾のスラッシュがないことを確認するために使用することができます。

他にも多くの方法があります。想定$uri = rtrim($_SERVER['REQUEST_URI'], '/')...

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

コードパッド

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

コードパッド

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

コードパッド

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

コードパッド

...などなど。

于 2012-06-01T01:23:33.407 に答える
1

最後のセグメントが必要な場合:

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

それ以外の場合、それが最後ではないが、値のインデックスがわかっている場合

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

$selectedSegment = $pieces[3];
于 2012-06-01T01:26:01.767 に答える
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 マッチの詳細については、このリンクを参照してくださいpreg_match

于 2012-06-01T01:29:18.490 に答える