Outoverlay
@Outoverlay

Как получать последнее?

Есть url адрес с неограниченными кол-во уровней и как получать всегда последний уровень. Пример страница-2/под-страница-2/ как получить из нее - "под-страница-2", и если допустим там будет под-страница-3, то вывести ее?
  • Вопрос задан
  • 355 просмотров
Решения вопроса 2
DevMan
@DevMan
echo basename($url), PHP_EOL;
// если адрес содержит get-параметры или якоря
echo basename(parse_url($url)['path']), PHP_EOL;
ideone.com/fMIXvt
можно и регуляркой, но зачем?
Ответ написан
riot26
@riot26
<:З )~~
Ну, регуляркой пока никто не сделал, так что вот:
$one = "/folder1/2/f3/folder4/five/";
$two = "/folder1/2/f3/folder4/five";

preg_match("/.*\/([^\/.]+)/", $one, $one_matches);
echo $one_matches[1]; //five

preg_match("/.*\/([^\/.]+)/", $two, $two_matches);
echo $two_matches[1]; //five


Вариант, учитывая замечания xmoonlight :

function getLastPath($url) {
  preg_match("/[^\?.]*\/([^\/\?.]+)/", $url, $res);
  return $res[1];
}

echo getLastPath("/f1/correct/?a=folder3/f4/"); //correct
echo getLastPath("/folder1/2/correct/"); //correct
echo getLastPath("/folder1/2/f3/correct"); //correct
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@entermix
function get_last($url){
    $result = explode('/', trim(parse_url($url, PHP_URL_PATH), '/'));
    return end($result)
}

print get_last('страница-2/под-страница-2/'); // под-страница-2
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
$p=explode('?',$url);
$p=explode('/',$p[0]);
if($p[count($p)-1]!='') $p=$p[count($p)-1];
else $p=$p[count($p)-2];
echo $p;
Ответ написан
creativeworm
@creativeworm
Если костыльно, то можно так:
<?php
$url = "страница-2/под-страница-2/еще/еще-77-раз/";
$temp_result = explode("/", $url); // Array ( [0] => страница-2 [1] => под-страница-2 [2] => еще [3] => еще-77-раз [4] => )
$temp_result = array_diff($temp_result, array('')); // удаляем пустые элементы
echo end($temp_result); // выводим моследний элемент
?>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы