Я хотел бы, получают последний сегмент контура в URL:
http://blabla/bla/wce/news.php
илиhttp://blabla/blablabla/dut2a/news.php
Например, в этих двух URL, я хочу получить сегмент контура: 'wce' и 'dut2a'.
Я пытался использовать $_SERVER['REQUEST_URI']
, но я получаю целый путь URL.
Попробуйте:
$url = 'http://blabla/blablabla/dut2a/news.php';
$tokens = explode('/', $url);
echo $tokens[sizeof($tokens)-2];
Предположим, что токены $
содержат как минимум 2 элемента.
Попробуйте следующее:
function getLastPathSegment($url) {
$path = parse_url($url, PHP_URL_PATH); // to get the path from a whole URL
$pathTrimmed = trim($path, '/'); // normalise with no leading or trailing slash
$pathTokens = explode('/', $pathTrimmed); // get segments delimited by a slash
if (substr($path, -1) !== '/') {
array_pop($pathTokens);
}
return end($pathTokens); // get the last segment
}
echo getLastPathSegment($_SERVER['REQUEST_URI']);
Я также протестировал это с несколькими URL-адресами из комментариев. Я собираюсь предположить, что все пути заканчиваются косой чертой, потому что я не могу определить, является ли / bob каталогом или файлом. Это будет предполагать, что это файл, если только у него нет завершающей косой черты.
echo getLastPathSegment('http://server.com/bla/wce/news.php'); // wce
echo getLastPathSegment('http://server.com/bla/wce/'); // wce
echo getLastPathSegment('http://server.com/bla/wce'); // bla
Попробуйте следующее:
$parts = explode('/', 'your_url_here');
$last = end($parts);
это просто
<?php
echo basename(dirname($url)); // if your url/path includes a file
echo basename($url); // if your url/path does not include a file
?>
basename
вернет компонент имени путиdirname
вернет путь родительского каталога