strip_tags
Эта функция возвращает строку str, из которой удалены HTML и PHP тэги. Для удаления тэгов используется автомат, аналогичный примененному в функции fgetss() .
Необязательный второй аргумент может быть использован для указания тэгов, которые не должны удаляться.
Замечание: Аргумент allowable_tags был добавлен в PHP 3.0.13 и PHP 4.0b3. С версии PHP 4.3.0 удаляются также HTML комментарии.
Так как strip_tags() не проверяет корректность HTML кода, незавершенные тэги могу привести к удалению текста, не входящего в тэги.
Пример 1. Пример использования strip_tags()
$text = ' Параграф.
Еще немного текста'; echo strip_tags($text); echo "\n\n-------\n"; // не удалять echo strip_tags($text, '
'); // Разрешаем ,, echo strip_tags($text, '');
Параграф. Еще немного текста ——-
Параграф.
Еще немного текста
Эта функция не изменяет атрибуты тэгов, указанных в аргументе allowable_tags, включая style и onmouseover.
С версии PHP 5.0.0 strip_tags() безопасна для обработки данных в двоичной форме.
У данной функции есть существенный недостаток — это склейка слов при удалении тегов. Кроме этого функция имеет уязвимости. Альтернативная функция аналог strip_tags:
c" * - корректно обрабатывается "грязный" html, когда в значениях атрибутов тагов могут встречаться символы < >* - корректно обрабатывается разбитый html * - вырезаются комментарии, скрипты, стили, PHP, Perl, ASP код, MS Word таги, CDATA * - автоматически форматируется текст, если он содержит html код * - защита от подделок типа: "script>alert('hi')script>" * * @param string $s * @param array $allowable_tags Массив тагов, которые не будут вырезаны * Пример: 'b' -- таг останется с атрибутами, '' -- таг останется без атрибутов * @param bool $is_format_spaces Форматировать пробелы и переносы строк? * Вид текста на выходе (plain) максимально приближеется виду текста в браузере на входе. * Другими словами, грамотно преобразует text/html в text/plain. * Текст форматируется только в том случае, если были вырезаны какие-либо таги. * @param array $pair_tags массив имён парных тагов, которые будут удалены вместе с содержимым * см. значения по умолчанию * @param array $para_tags массив имён парных тагов, которые будут восприниматься как параграфы (если $is_format_spaces = true) * см. значения по умолчанию * @return string * * @license http://creativecommons.org/licenses/by-sa/3.0/ * @author Nasibullin Rinat, http://orangetie.ru/ * @charset ANSI * @version 4.0.14 */ function strip_tags_smart( /*string*/ $s, array $allowable_tags = null, /*boolean*/ $is_format_spaces = true, array $pair_tags = array('script', 'style', 'map', 'iframe', 'frameset', 'object', 'applet', 'comment', 'button', 'textarea', 'select'), array $para_tags = array('p', 'td', 'th', 'li', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'form', 'title', 'pre') ) < //return strip_tags($s); static $_callback_type = false; static $_allowable_tags = array(); static $_para_tags = array(); #regular expression for tag attributes #correct processes dirty and broken HTML in a singlebyte or multibyte UTF-8 charset! static $re_attrs_fast_safe = '(?![a-zA-Z\d]) #statement, which follows after a tag #correct attributes (?>[^>"\']+ | (?<=[\=\x20\r\n\t]|\xc2\xa0) "[^"]*" | (?<=[\=\x20\r\n\t]|\xc2\xa0) \'[^\']*\' )* #incorrect attributes [^>]*+'; if (is_array($s)) < if ($_callback_type === 'strip_tags') < $tag = strtolower($s[1]); if ($_allowable_tags) < #tag with attributes if (array_key_exists($tag, $_allowable_tags)) return $s[0]; #tag without attributes if (array_key_exists('', $_allowable_tags)) < if (substr($s[0], 0, 2) === '') return '' . $tag . '>'; if (substr($s[0], -2) === '/>') return ''; return ''; > > if ($tag === 'br') return "\r\n"; if ($_para_tags && array_key_exists($tag, $_para_tags)) return "\r\n\r\n"; return ''; > trigger_error('Unknown callback type "' . $_callback_type . '"!', E_USER_ERROR); > if (($pos = strpos($s, '<')) === false || strpos($s, '>', $pos) === false) #speed improve < #tags are not found return $s; >$length = strlen($s); #unpaired tags (opening, closing, !DOCTYPE, MS Word namespace) $re_tags = '~ <[/!]?+ ( [a-zA-Z][a-zA-Z\d]*+ (?>:[a-zA-Z][a-zA-Z\d]*+)? ) #1 ' . $re_attrs_fast_safe . ' > ~sxSX'; $patterns = array( '//sxSX', #встроенный PHP, Perl, ASP код '//sxSX', #блоки CDATA #'//sxSX', #:DEPRECATED: MS Word таги типа . '//sSX', #комментарии #MS Word таги типа ". ", #условное выполнение кода для IE типа " Читайте также: Python list with empty string