weranda
@weranda

Как в PHP заменить подстроки и исключить из замены некоторые теги?

Приветствую

Есть HTML, для примера такой (сразу в переменной):

$text = '
	<h2>Lorems ipsum dolor sit amet</h2>
	<p>Loremi ipsum dolor sit amet</p>
	<p>Loremis ipsum dolor sit amet</p>

	<h3>Lorem ipsum dolor sit amet</h3>

	<p>Lorem ipsum dolor sit amet</p>

	<p>Lorem ipsum dolor sit amet</p>

	<p>Lorem ipsum dolor sit amet</p><h4>Lorem ipsum dolor sit amet</h4><p>Lorem ipsum dolor sit amet</p><p>Lorem ipsum dolor sit amet</p>
';


Нужно заменить по регулярке "склонения" слова "Lorem". В тексте их встречается несколько: Lorem, Lorems, Loremi, Loremis.

На ум приходит простое решение:

$search = '/(\bLore.+?\b)/ui';
$replace = trim('<strong>$1</strong>');
$text = preg_replace($search, $replace, $text);


И, вроде бы, работает, но есть одна проблема — на знаю как исключить замены в тегах заголовков (h1, h2, h3).

Вопросы:
— корректно ли меняю неполную словоформу?
— как исключить замены в тегах заголовков (исключить все что внутри h1, h2, h3)?
  • Вопрос задан
  • 194 просмотра
Пригласить эксперта
Ответы на вопрос 2
slo_nik
@slo_nik Куратор тега PHP
Добрый вечер.
Как вариант - htmlpurifier
Гибкая настройка, что и как фильтровать.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
Бюро Цифровых Технологий Санкт-Петербург
от 120 000 до 180 000 ₽
03 мая 2024, в 14:40
1000 руб./за проект
03 мая 2024, в 14:39
500 руб./за проект