Регулярные выражения для удаления тегов

Подборка регулярных выражений для удаления HTML тегов и атрибутов.

1

Удаление <style>...</style>.

$text = '<p>Текст <style color="#fff">стиль</style> текст</p>';
echo preg_replace('/\s?<style[^>]*?>.*?<\/style>\s?/si', ' ', $text);
PHP

Результат:

<p>Текст текст</p>

По аналогии удаление тегов <p>, <div> и <script>:

echo preg_replace('/\s?<p[^>]*?>.*?<\/p>\s?/si', ' ', $text);
echo preg_replace('/\s?<div[^>]*?>.*?<\/div>\s?/si', ' ', $text);
echo preg_replace('/\s?<script[^>]*?>.*?<\/script>\s?/si', ' ', $text);
PHP
2
$text = '<p class="text" style="margin: 0 0 0 0;" id="fid-123">текст</p>';

// Удалить class
echo preg_replace('/\s?class=["][^"]*"\s?/i', ' ', $text);

// Удалить style
echo preg_replace('/\s?style=["][^"]*"\s?/i', ' ', $text); 

// Удалить id
echo preg_replace('/\s?id=["][^"]*"\s?/i', ' ', $text);
PHP

Результат:

<p style="margin: 0 0 0 0;" id="fid-123">текст</p>
<p class="text" id="fid-123">текст</p>
<p class="text" style="margin: 0 0 0 0;" >текст</p>

Удалить все атрибуты у тегов:

$text = '<p style="margin: 0 0 0 0;" class="text" id="fid-123">текст</p>';
echo preg_replace("/(<[a-z]).*?(>)/i", '\\1\\2', $text);
PHP

Результат:

<p>текст</p>

Удалить атрибуты только у определенных HTML тегов:

$text = preg_replace("/(<p).*?(>)/i", '\\1\\2', $text);
$text = preg_replace("/(<div).*?(>)/i", '\\1\\2', $text);
PHP
3

Регулярные выражения удаляют теги <p> и <div>, но оставляет их содержание.

$text = '
<table>
	<tr>
		<td>text 1</td>
		<td><p>text 2</p></td>
		<td><div>text 3</div></td>
	</tr>
</table>';
 
// Удаление <p>
$text = preg_replace('/(<td[^>]*>)(.*)(<p[^>]*>)(.*)(<\/p>)(.*)(<\/td>)/i', '\\1\\2\\4\\6\\7', $text);
 
// Удаление <div>
$text = preg_replace('/(<td[^>]*>)(.*)(<div[^>]*>)(.*)(<\/div>)(.*)(<\/td>)/i', '\\1\\2\\4\\6\\7', $text);
 
print_r($text);
PHP

Результат:

<table>
	<tr>
		<td>text 1</td>
		<td>text 2</td>
		<td>text 3</td>
	</tr>
</table>
27.08.2019, обновлено 22.09.2021
20490

Комментарии

, чтобы добавить комментарий.

Другие публикации

Регулярные выражения для замены на теги
Замена URL, e-mail и текста на HTML-теги по регулярному выражению PHP.
5178
+4
Поиск похожих текстов в базе данных MySQL + PHP
Один из вариантов поиска похожих статей в базе данных основан на схождении слов в двух текстах.
7208
+6
Работа с FTP в PHP
Протокол FTP – предназначен для передачи файлов на удаленный хост. В PHP функции для работы с FTP как правило всегда доступны и не требуется установка дополнительного расширения.
18393
+2
Contenteditable – текстовый редактор
Если добавить атрибут contenteditable к элементу, его содержимое становится доступно для редактирования пользователю, а...
43572
+34
Как дописать стили в атрибут style тегов HTML через PHP
Данный вопрос возникает при верстке писем т.к. стили прописанные в head в почтовых сервисах и программах не работают, а...
18760
+3
Автоматическое оглавление для статьи
Задача: появилась необходимость сделать якорное меню у ранее опубликованных статей, статей много, вручную дополнять их...
5427
+1