我想从以下类型的结构中获取 last 参数:
$current_url = "/wp/author/admin/1";
所以,从上面的网址我想得到" 1"
以下代码将正确返回,但在此我指定了变量的确切位置。如何在不指定位置的情况下获取最后一个参数(例如,无论URL中有多少参数,只需获取最后一个参数):
$parts = explode('/', $current_url);
var_dump($parts[4]);
答案 0 :(得分:0)
。这将始终抓住数组中的最后一个元素。
答案 1 :(得分:0)
我确定还有其他方法,我会使用array_pop
$parts = explode('/', $current_url);
var_dump(array_pop($parts));
http://php.net/manual/en/function.array-pop.php " array_pop()弹出并返回数组的最后一个值,将数组缩短一个元素。"
但最后一个注释很重要,因为它会影响$ parts数组的内容
答案 2 :(得分:0)
$parts = explode("/", $url);
echo end($parts);
答案 3 :(得分:0)
我建议使用正则表达式,因为你可以做很多好事,例如还允许以/
结尾的网址:
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
)。