php. Удаляем html тег и оставляем его содержимое

Данный материал предоставлен сайтом PacificSky.Ru исключительно в ознакомительных целях. Администрация не несет ответственности за его содержимое.
Представим ситуацию, что у нас есть какой-то текст, части которого заключены в html теги.
Как пример к данной статье, рассмотрим на примере тегов b и strong.
php. Удаляем html тег и оставляем его содержимое


Возьмем для примера любой текст:
"Всем привет я жирный текст и меня нужно сделать обычным. И я тоже жирный текст и тоже хочу быть обычным."

В данном тексте присутствует 3 тега - br, strong и b.

Приступаем к разбору:
<?php
$text = "Всем привет <b>я жирный текст</b> и меня нужно сделать обычным.<br/> И я тоже <strong style='font-size: 18px;'>жирный</strong> текст и тоже хочу быть обычным.";

echo $text;


В данном примере мы берем переменную $text и присваиваем наш текст.
Далее с помощью строки:
echo $text;

Выводим полученный результат.
php. Удаляем html тег и оставляем его содержимое


Часть текста, заключенная в теги b и strong, выделена жирным, черным цветом.
В нашем случае, нам нужно избавиться от данных тегов, не повредив их содержимое.

Для этого воспользуемся регулярным выражением, при помощи функции preg_replace.
Создадим 2 правила, которые будут избавлять нас от данных тегов:

$text = preg_replace('|<strong[^>]*?>(.*?)</strong>|', '\1', $text);
$text = preg_replace('|<b[^>]*?>(.*?)</b>|', '\1', $text);


Исходя из правила:
preg_replace('|]*?>(.*?)|', '\1', $text)
Мы избавляемся от тега с момента открытия, до закрытия , а содержимое данного тега, прячем в карман - (.*?) и возвращаем содержимое кармана - '\1'.
Теперь переменная $text содержит текст без данного тега.
Аналогично повторяем правило и для тега b.

В итоге наш код выглядит следующим образом:
<?php
$text = "Всем привет <b>я жирный текст</b> и меня нужно сделать обычным.<br/> И я тоже <strong style='font-size: 18px;'>жирный</strong> текст и тоже хочу быть обычным.";

$text = preg_replace('|<strong[^>]*?>(.*?)</strong>|', '\1', $text);
$text = preg_replace('|<b[^>]*?>(.*?)</b>|', '\1', $text);

echo $text;


Результат выполнения данного кода:
php. Удаляем html тег и оставляем его содержимое


Как можно наблюдать, мы получили желаемый результат.
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.