Задать вопрос
PankovAlxndr
@PankovAlxndr
Fullstack web developer

Как написать регулярное выражение?

Здравствуйте, у меня есть такая строка:
<ul>
	<li>
	<p>
		 Какой-то текст
	</p>
 </li>
	<li>
	<p>
		 Какой-то текст
	</p>
 </li>
</ul>


Мне необходимо удалить все теги внутри элемента списка, те чтобы внутри тега был только текст (без параграфа).
Заранее благодарен за помощь.
  • Вопрос задан
  • 131 просмотр
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 2
gobananas
@gobananas
finishhim.ru
// Выбираем всё что в списке
preg_match('/<li>(.*?)<\/li>/ism', $str, $res);

// удаляем все теги
$clear = preg_replace('/<(.*?)>/ism', '', $res[1]);

// Заменяем исходную строку на очищенную от тегов
$str = str_replace($res[1], $clear, $str);

На самом деле вместо preg_match если элементов много надо сделать preg_match_all и последующее удаление тегов с заменой провести в цикле
Ответ написан
Комментировать
xpert13
@xpert13
Full Stack Developer
Конкретно по данному случаю можно использовать такой код:

$text = '<ul>
  <li>
  <p>
     Какой-то текст
  </p>
 </li>
  <li>
  <p>
     Какой-то текст
  </p>
 </li>
</ul>';

$pattern = '~(<li[^>]*>)\\s*<p>([\\s\\S]+?)</p>\\s*(</li>)~i';
$replacement = '\\1\\2\\3';
$returnValue = preg_replace($pattern, $replacement, $text, -1);

echo $returnValue;
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
trevoga_su
@trevoga_su
по DOM пройдись с помощью функций для работы с DOM
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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