Подскажите, как удалить при помощи php вложенные html-теги strong
Сейчас имеем такую строку:
<strong>
Жил старик со своею старухой <strong>У самого синего моря</strong> Они жили в ветхой землянке Ровно тридцать лет и три года.
</strong>
Нужно привести её к такому виду:
<strong>
Жил старик со своею старухой У самого синего моря Они жили в ветхой землянке Ровно тридцать лет и три года.
</strong>
Организовать поиск строк между тегами <strong> и </strong>, а далее можно удалять либо все теги (например, с помощью strip_tags()), либо только необходимые <strong> и </strong>:
$str = '<strong>
Жил старик со своею старухой <strong>У самого синего моря</strong> Они жили в ветхой землянке Ровно тридцать лет и три года.
</strong>';
$str = preg_replace_callback(
'~(?<=<strong>)(.+)(?=</strong>)~s',
function($a) { return preg_replace('~</?strong>~', '', $a[0]); },
$str
);
echo $str;
Результат:
<strong>
Жил старик со своею старухой У самого синего моря Они жили в ветхой землянке Ровно тридцать лет и три года.
</strong>
Есть еще такой вариант
$text = "<strong>Жил старик со своею старухой <strong>У самого синего моря</strong> Они жили в ветхой землянке Ровно тридцать лет и три года.
</strong>";
// удаляет любые теги
$result = '<strong>'. preg_replace('/<(.*?)>|<\/(.*?)>/i', '', $text) .'</strong>';
echo $result;
// удаляет только теги <strong>
$result = '<strong>'. str_ireplace('<strong>', '', str_ireplace('</strong>', '', $text)) .'</strong>';
echo $result;
Еще вариант с использованием strip_tags():
echo preg_replace_callback('~<strong>\K(.+)(?=</strong>)~is', function($m) {
return strip_tags($m[1]);
}, $string);
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости