Получение ссылки на последнюю страницу

Автор Obarun, 23 февраля 2025, 15:03:05

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Obarun

Задача решена, но может кто подскажет менее костыльное решение.

MessageIndex.template.php
Необходимо вывести последнюю страницу для каждой темы.
foreach($context['topics'] as $topic)
В массиве $topic есть posts, где хранится строка вида: Страницы: 1 2 3 4 и так далее.
Из-за того, что это строка, я не могу взять ни номер последней, ни ссылку на нее.

Решение такое:
function extractLastLink($input, $type) {
    $pattern = '/<a[^>]+href="([^"]+)"[^>]*>(.*?)<\/a>/s';

    $matches = [];

    preg_match_all($pattern, $input, $matches);

    if (!empty($matches)) {
        $lastIndex = count($matches) - 1;
        return ($type === 'href') ? ($matches[1][$lastIndex] ?? null) :
               (($type === 'text') ? ($matches[2][$lastIndex] ?? null) : null);
    }
    return null;
}

Применяем так: echo extractLastLink($topic['pages'], 'href или text');

Это можно решить более простым способом или нет?

Bugo

    foreach ($context['topics'] as $t) {
        var_dump(count(array_filter(explode('> <', $t['pages']))));
    }

Obarun

@Bugo спасибо, но мне надо было ещё и href последней страницы вытащить. По итогу не пришел к какому-то менее громоздкому решению кроме функции.