我需要从URL中获取最后一个单词。例如,我有以下网址:
http://www.mydomainname.com/m/groups/view/test
我只需要使用 PHP 进行"测试",没有别的。我尝试使用这样的东西:
$words = explode(' ', $_SERVER['REQUEST_URI']);
$showword = trim($words[count($words) - 1], '/');
echo $showword;
它对我不起作用。你能帮我吗?
非常感谢!!
将基本名称与parse_url一起使用:
echo basename(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH));
通过使用
正则表达式:
preg_match("/[^'/]+$/", "http://www.mydomainname.com/m/groups/view/test", $matches);
$last_word = $matches[0]; // test
我用了这个:
$lastWord = substr($url, strrpos($url, '/') + 1);
Thnx to: https://stackoverflow.com/a/1361752/4189000
您可以使用
explode
但需要使用/
作为分隔符:
$segments = explode('/', $_SERVER['REQUEST_URI']);
请注意,如果当前 URI 具有查询字符串,则$_SERVER['REQUEST_URI']
可以包含查询字符串。在这种情况下,您应该在 parse_url
之前仅获取路径:
$_SERVER['REQUEST_URI_PATH'] = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
要考虑尾部斜杠,您可以使用 rtrim
在将其拆分为段之前删除它们 explode
.所以:
$_SERVER['REQUEST_URI_PATH'] = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
$segments = explode('/', rtrim($_SERVER['REQUEST_URI_PATH'], '/'));
为此,
您可以在REQUEST_URI
上使用explode
。我做了一些简单的功能:
function getLast()
{
$requestUri = $_SERVER['REQUEST_URI'];
# Remove query string
$requestUri = trim(strstr($requestUri, '?', true), '/');
# Note that delimeter is '/'
$arr = explode('/', $requestUri);
$count = count($arr);
return $arr[$count - 1];
}
echo getLast();
如果您
不介意在存在时包含查询字符串,则只需使用 basename
.您也不需要使用parse_url
。
$url = 'http://www.mydomainname.com/m/groups/view/test';
$showword = basename($url);
echo htmlspecialchars($showword);
当$url
变量是从用户输入或$_SERVER['REQUEST_URI']
生成时;在使用echo
之前使用htmlspecialchars
或htmlentities
,否则用户可以添加html
标签或在网页上运行JavaScript
。
使用 preg*
if ( preg_match( "~/(.*?)$~msi", $_SERVER[ "REQUEST_URI" ], $vv ))
echo $vv[1];
else
echo "Nothing here";
这只是代码的想法。它可以在函数中重写。
附言。通常我使用mod_rewrite来处理这个问题...在 PHP 中处理 $_GET 变量。这是很好的做法,恕我直言
ex: $url = 'http://www.youtube.com/embed/ADU0QnQ4eDs';
$url = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$url_path = parse_url($url, PHP_URL_PATH);
$basename = pathinfo($url_path, PATHINFO_BASENAME);
// **output**: $basename is "ADU0QnQ4eDs"
您将在下面的链接中获得完整的解决方案。 我刚刚发现 从 PHP 中的斜杠后获取最后一个单词。
在 php 中获取 url 的最后一个参数