Мне нужно указать начальный тег последнего верхнего уровня LI в списке, который может содержать или не содержать подсписки в различных позициях - без использования CSS или Javascript.
Есть ли простое / элегантное регулярное выражение, которое может помочь с этим? Я не гуру с ними, но появляется необходимость в жадных / не жадных селекторах, когда я выбираю все изменения среднего текста (. *) / (. +), Когда вложенные списки добавляются и перемещаются в список - и это сбивает меня с толку.
$pattern = '/^(<ul>.*)<li>(.+<\/li><\/ul>)$/';
$replacement = '$1<li id="lastLi">$3';
Может быть, есть более легкий подход? преобразование в XML для целевой LI, а затем преобразовать обратно?
т:
Единственный элемент
<ul>
<li>TARGET</li>
</ul>
Несколько элементов
<ul>
<li>foo</li>
<li>TARGET</li>
</ul>
Вложенные списки до конца
<ul>
<li>
foo
<ul>
<li>bar</li>
</ul>
<li>
<li>TARGET</li>
</ul>
Вложенный список в конце
<ul>
<li>foo</li>
<li>
TARGET
<ul>
<li>bar</li>
</ul>
</li>
</ul>