Главная > PHP > preg_replace — удалить из документа все HTML-теги

preg_replace — удалить из документа все HTML-теги

Пример взят с http://forum.searchengines.ru/showthread.php?t=209299

<?php 
// $document на выходе должен содержать HTML-документ. 
// Необходимо удалить все HTML-теги, секции javascript, 
// пробельные символы. Также необходимо заменить некоторые 
// HTML-сущности на их эквивалент. 
 
$search = array ("'<script[^>]*?>.*?</script>'si",  // Вырезает javaScript 
                 "'<[\/\!]*?[^<>]*?>'si",           // Вырезает HTML-теги 
                 "'([\r\n])[\s]+'",                 // Вырезает пробельные символы 
                 "'&(quot|#34);'i",                 // Заменяет HTML-сущности 
                 "'&(amp|#38);'i", 
                 "'&(lt|#60);'i", 
                 "'&(gt|#62);'i", 
                 "'&(nbsp|#160);'i", 
                 "'&(iexcl|#161);'i", 
                 "'&(cent|#162);'i", 
                 "'&(pound|#163);'i", 
                 "'&(copy|#169);'i", 
                 "'&#(\d+);'e");                    // интерпретировать как php-код 
 
$replace = array ("", 
                  "", 
                  "\\1", 
                  "\"", 
                  "&", 
                  "<", 
                  ">", 
                  " ", 
                  chr(161), 
                  chr(162), 
                  chr(163), 
                  chr(169), 
                  "chr(\\1)"); 
 
$text = preg_replace($search, $replace, $document); 
?>

Ну а под конкретный случай по примеру)

2020-02-27 Обновлено, в виде функции:

function html_to_text($document){
	$search=array(
		"'<script[^>]*?>.*?</script>'si",
		"'<style[^>]*?>.*?</style>'si",
		'/<!--(.*?)-->/',
		"'<[\/\!]*?[^<>]*?>'si",
		"'([\r\n])[\s]+'",
		"'&(quot|#34);'i",
		"'&(amp|#38);'i",
		"'&(lt|#60);'i",
		"'&(gt|#62);'i",
		"'&(nbsp|#160);'i",
	);
	$replace=array(
		"",
		"",
		"",
		"",
		" ",
		"\"",
		"&",
		"<",
		">",
		" ",
	);
	$text=preg_replace($search,$replace,$document);
	return $text;
}
Categories: PHP Tags: ,
  1. MrBars17
    10 мая,2016 в 11:40 | #1

    @DVS
    Иногда надо опреденные вырезать, а не все с перечислением исключений.

  2. Евгений
    9 мая,2016 в 18:50 | #2

    Спасибо, хочу сказать, что кроме того, что есть в коде, можно добавлять свои символы для замены) 6 лет статье, а все популярна! Автору еще раз спасибо!

  3. DVS
    2 февраля,2016 в 17:02 | #3

    @К.О.
    только хотел написать

  4. Гость
    11 января,2016 в 13:42 | #4

    Огромное спасибо, очень помогла

  5. Дмитрий
    27 июня,2014 в 07:19 | #5

    Думал комменты накручены, а оказывается код и реально рабочий! Спасибо, давно искал такой)

  6. Александр
    8 октября,2013 в 22:40 | #6

    Спасибо. Всё никак не подружусь с регулярными выражениями.

  7. Дарья
    25 января,2013 в 11:55 | #7

    Спасибо большое! Отличный скрипт! Для моего случая strip_tags не подошел!

  8. Redfern.89
    7 ноября,2012 в 10:57 | #8

    олололооололол)) Мне бы функцию поиска всех тегов в тексте и вывода имени тега и его содержимого

  9. Riki
    13 августа,2012 в 07:35 | #9

    Функцией strip_tags гораздо удобнее

  10. К.О.
    27 января,2011 в 12:33 | #10

    strip_tags ? Не, не слышал
    (с) автор

  11. Александр
    22 ноября,2010 в 16:46 | #11

    Поставил в скрипт и сразу все проблемы решил. Спасибо!

Похожие публикации