Получить последнее слово из URL после слэша в PHP - PullRequest
14 голосов
/ 07 мая 2011

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

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

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

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

Это не работает для меня.Можете ли вы помочь мне, пожалуйста?

Большое спасибо !!

Ответы [ 8 ]

38 голосов
/ 07 мая 2011

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

echo basename(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH));
19 голосов
/ 07 мая 2011

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

preg_match("/[^\/]+$/", "http://www.mydomainname.com/m/groups/view/test", $matches);
$last_word = $matches[0]; // test
3 голосов
/ 19 октября 2016

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

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

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

2 голосов
/ 07 мая 2011

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

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

Обратите внимание, что $_SERVER['REQUEST_URI'] может содержать строку запроса, если текущий 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'], '/'));
1 голос
/ 07 мая 2011

Для этого вы можете использовать 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();
0 голосов
/ 15 июля 2018

Если вы не возражаете против включения строки запроса, когда она присутствует, просто используйте 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 голосов
/ 25 апреля 2016
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"

Полное решение вы получите по ссылке ниже. Я только что нашел, чтобы получить последнее слово из URL после косой черты в PHP.

Получить последний параметр URL в php

0 голосов
/ 07 мая 2011

используйте preg *

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...