UPDATE:
Спасибо всем за ваш вклад. Некоторая дополнительная информация.
Это действительно небольшой кусок разметки (20 строк), с которым я работаю и стремился использовать регулярное выражение для выполнения работы.
У меня также есть возможность взломать скрипт (для электронной коммерции), чтобы вставить классы при построении навигации. Я хотел ограничить количество хаков, которые у меня есть, чтобы облегчить себе задачу при обновлении до последней версии программного обеспечения.
С учетом сказанного я довольно хорошо знаю свою ситуацию и различные доступные мне варианты. Первая часть моего регулярного выражения работает, как ожидалось. Я действительно более или менее написал, чтобы увидеть, если кто-то скажет: «Эй, дурак, это легко просто изменить это .....»
После того, как я подошел к концу с некоторыми из моих усилий, на данный момент это больше принцип. Просто знать (и учиться) решение этой проблемы существует. Я также ненавижу, когда меня бьют по коду.
ОРИГИНАЛ:
Я пытаюсь использовать регулярные выражения для добавления CSS-класса в первый и последний элементы списка в упорядоченном списке. Я перепробовал множество разных способов, но не смог получить желаемых результатов.
У меня есть регулярное выражение для первого элемента списка, но я не могу найти правильное выражение для последнего. Вот с чем я работаю:
$patterns = array('/<ul+([^<]*)<li/m', '/<([^<]*)(?<=<li)(.*)<\/ul>/s');
$replace = array('<ul$1<li class="first"','<li class="last"$2$3</ul>');
$navigation = preg_replace($patterns, $replace, $navigation);
Любая помощь будет принята с благодарностью.