从URL获取最后一个参数


Get last parameter from the URL

我想从以下类型的结构中获得最后一个参数:

$current_url = "/wp/author/admin/1";    

所以,从上面的url我想得到"1"

下面的代码将正确返回它,但是这里我指定了变量的确切位置。我怎么能得到最后一个参数没有指定它的位置(例如。不管URL中有多少个参数,只取最后一个):

$parts = explode('/', $current_url);
var_dump($parts[4]);

我建议使用正则表达式,因为你可以做一些很好的事情,例如也允许以/:

结尾的url
if (!preg_match('/'/([^'/]*)'/?$/', $current_url, $matches)
    // do something if the URL does not match the pattern
$lastComponent = $matches[1];

这是怎么回事?如果正则表达式能找到一个正斜杠('/)后跟任意数量的非斜杠(([^'/]*)),则正则表达式匹配,然后可以选择后跟另一个斜杠('/?),然后到达字符串的末尾($)。

如果正则表达式不匹配,该函数返回一个值,计算结果为false,因此您可以为垃圾输入做好准备,并在适当的情况下发出警告。注意([^'/]*)中的括号,它将取这里匹配的所有字符(从斜杠到输入字符串末尾或最后一个斜杠的所有字符),并将其放入自己的匹配项($matches[1])中。

我建议你尝试regexpal.com,如果你想调试和检查你的正则表达式。它们是非常强大的工具,但在编程中并没有得到充分的利用。特别是在PHP中,您可以为它们获得很好的函数(例如preg_match, preg_match_allpreg_match_split)。

在爆炸数组后使用end()函数。它将总是获取数组中的最后一个元素。

http://us1.php.net//manual/en/function.end.php

我相信还有其他方法,我会使用array_pop

$parts = explode('/', $current_url);
var_dump(array_pop($parts));

http://php.net/manual/en/function.array-pop.php"array_pop()弹出并返回数组的最后一个值,将数组缩短一个元素。"

但是最后一点很重要,因为它会影响$parts数组

的内容
$parts = explode("/", $url);
echo end($parts);