我想从以下类型的结构中获得最后一个参数:
$current_url = "/wp/author/admin/1";
所以,从上面的url我想得到"1"
下面的代码将正确返回它,但是这里我指定了变量的确切位置。我怎么能得到最后一个参数没有指定它的位置(例如。不管URL中有多少个参数,只取最后一个):
$parts = explode('/', $current_url);
var_dump($parts[4]);
我建议使用正则表达式,因为你可以做一些很好的事情,例如也允许以/
:
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_all
和preg_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);