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;
}

Комментарии 11

Написать комментарий
  1. MrBars17

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

  2. Евгений

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

  3. Гость

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

  4. Дмитрий

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

  5. Александр

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

  6. Дарья

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

  7. Redfern.89

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

  8. Александр

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

Оставить комментарий

или Ctrl+Enter

Комментарии к записи по RSS