Задать вопрос

Как осуществить удаление между тегами?

Столкнулся с ситуацией, когда нужно между двумя тегами удалить br , никак не получается составить регулярные выражения, буду весьма благодарен, если кто поможет.
Вот пример :
<br />
<ul><br />
	<li></li><br />
	<li></li><br />
</ul>
<br />

Должно получиться:
<br />
<ul>
	<li></li>
	<li></li>
</ul>
<br />
  • Вопрос задан
  • 2497 просмотров
Подписаться 4 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
$pattern = '/><br\ \/>(\s+|\t+)?\</g';
$replacement = '>$1<';
preg_replace($pattern, $replacement);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
xpath единственный достойный вариант.

Проходите по DOM дереву, для каждого элемента смотрите элемент родитель. Если это ul/ol, и наш текущий тег не li, удаляем.

Это очень упрощенный вариант, но можно добавить кучи правил и получить довольно эффективный фильтр.

Можно так же воспользоваться штуками типа HTMLPurifier.

А что до регулярок - не стоит вообще парсить xml/html регулярками.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы