it-swarm.com.ru

Получить последнее слово из URL после косой черты в PHP

Мне нужно получить последнее слово из URL. Так, например, у меня есть следующий URL:

http://www.mydomainname.com/m/groups/view/test

Мне нужно получить PHP только «test», больше ничего. Я пытался использовать что-то вроде этого:

$words = explode(' ', $_SERVER['REQUEST_URI']);
$showword = trim($words[count($words) - 1], '/');
echo $showword;

У меня не работает. Не могли бы вы мне помочь?

Огромное спасибо!!

14
DiegoP.

с помощью регулярных выражений:

preg_match("/[^\/]+$/", "http://www.mydomainname.com/m/groups/view/test", $matches);
$last_Word = $matches[0]; // test
19
fardjad

Используйте базовое имя с parse_url:

echo basename(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH));
36
sanjary

Я использовал это:

$lastWord = substr($url, strrpos($url, '/') + 1);

Спасибо: https://stackoverflow.com/a/1361752/4189000

3
Wouter den Ouden

Вы можете использовать explode , но вам нужно использовать / в качестве разделителя:

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

Обратите внимание, что $_SERVER['REQUEST_URI'] может содержать строку запроса, если она есть у текущего URI. В этом случае вы должны использовать parse_url before, чтобы получить только путь:

$_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'], '/'));
2
Gumbo

Для этого вы можете использовать explode на вашем REQUEST_URI. Я сделал несколько простых функций:

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();
1
Robik

Если вы не возражаете против включения строки запроса при ее наличии, просто используйте 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 на веб-странице.

0
Dan Bray

использовать preg *

if ( preg_match( "~/(.*?)$~msi", $_SERVER[ "REQUEST_URI" ], $vv ))
 echo $vv[1];
else
 echo "Nothing here";

это была просто идея кода. Это можно переписать в функции.

PS. Обычно я использую mod_rewrite для обработки этого ... и процесса в PHP переменные $ _GET . И это хорошая практика, ИМХО

0
publikz.com