Php Regex закрыть открытый тег на разрыв строки

1

У меня есть html-код:

<li>some text
more text

<li>some other text
any more text

Я хотел бы закрыть элементы списка. Предмет должен быть закрыт при разрыве линии. Результат будет выглядеть следующим образом:

<li>some text<li>
more text

<li>some other text<li>
any more text

Это мое регулярное выражение, которое не работает:

preg_replace("/<li>+(.*?)+/ig","\\2</li>", $o );

Он не возвращает ничего, а не:

<li>some text<li>
more text

<li>some other text<li>
any more text

Большое спасибо

Теги:
preg-replace

2 ответа

2
Лучший ответ

Это регулярное выражение возьмет все в строке li, а \K очистит совпадение и установит курсор в нужную точку:

<li>.*\K

Затем замените его:

</li>

Regex живут здесь.

Это из-за . не соответствуют \n.


С эффективностью:

<li>.*(?:(?<!<\/li>)(?=\s*\n))\K

Regex живут здесь.

0

Вот пример того, как реализовать вашу проблему с помощью preg_replace

Regex live

$count = null;
$returnValue = preg_replace('/<li>(.*)/', '<li>$1</li>', '<li>some text
more text', -1, $count);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню