@mega-sinyak

Как обрезать ссылку по первый включительно с конца слэш?

Для примера есть ссылка вида /контроллер/экшен/5 (для пагинации ВЕЗДЕ используется формат ссылок, заканчивающихся на /номер_страницы)

Я для пагинации собираю её так:

$this->uri = dirname($_SERVER['REQUEST_URI']); // тут получаем /контроллер/экшен
$this->current_page = $this->getCurrentPage($current_page); // тут прилетает 5, проверяем-возвращаем


Вывод

public function getHtml()
{
    $start_page = $back = $page2left = $page1left = $page1right = $page2right = $forward = $end_page = null;
    if ($this->current_page > 3) {
        $start_page = "<li class='page-item'><a class='page-link' href='{$this->uri}/1'>&laquo;</a></li>";
    }
    if ($this->current_page > 1) {
        $back = "<li class='page-item'><a class='page-link' href='{$this->uri}/" . ($this->current_page - 1) . "'>&#8249;</a></li>";
    }
    if ($this->current_page - 2 > 0) {
        $page2left = "<li class='page-item'><a class='page-link' href='{$this->uri}/" . ($this->current_page - 2) . "'>" . ($this->current_page - 2) . "</a></li>";
    }
    if ($this->current_page - 1 > 0) {
        $page1left = "<li class='page-item'><a class='page-link' href='{$this->uri}/" . ($this->current_page - 1) . "'>" . ($this->current_page - 1) . "</a></li>";
    }
    if ($this->current_page + 1 <= $this->count_pages) {
        $page1right = "<li class='page-item'><a class='page-link' href='{$this->uri}/" . ($this->current_page + 1) . "'>" . ($this->current_page + 1) . "</a></li>";
    }
    if ($this->current_page + 2 <= $this->count_pages) {
        $page2right = "<li class='page-item'><a class='page-link' href='{$this->uri}/" . ($this->current_page + 2) . "'>" . ($this->current_page + 2) . "</a></li>";
    }
    if ($this->current_page < $this->count_pages) {
        $forward = "<li class='page-item'><a class='page-link' href='{$this->uri}/" . ($this->current_page + 1) . "'>&#8250;</a></li>";
    }
    if ($this->current_page < ($this->count_pages - 2)) {
        $end_page = "<li class='page-item'><a class='page-link' href='{$this->uri}/{$this->count_pages}'>&raquo;</a></li>";
    }
    return '<nav class="mt-1"><ul class="pagination pagination-sm justify-content-center m-0">' . $start_page . $back . $page2left . $page1left . '<li class="page-item active"><a class="page-link">' . $this->current_page . '</a></li>' . $page1right . $page2right . $forward . $end_page . '</ul></nav>';
}



У меня вопрос: вот этот вариант с dirname($_SERVER['REQUEST_URI']) - это подходящее решение? Оно правильно или это какой-то велик для быстрого решения? Просто я такое решение нагуглил если честно, не своими руками делал dirname().
  • Вопрос задан
  • 177 просмотров
Решения вопроса 1
Spartak-2205
@Spartak-2205
Разработка и создание сайтов
Лучше уж тогда сразу использовать basename
echo basename('/контроллер/экшен/5').PHP_EOL; //5
echo basename('/контроллер/экшен/223/', '/').PHP_EOL; //223
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 18:38
1500 руб./в час
19 апр. 2024, в 18:36
1500 руб./за проект
19 апр. 2024, в 18:36
30000 руб./за проект