удалить html сущности php
Удалить html сущности php
Описание string html_entity_decode ( string string [, int quote_style [, string charset]] )
Необязательный аргумент quote_style позволяет указать способ обработки ‘одиночных’ и «двойных» кавычек. Значением этого аргумента может быть одна из трех следующих констант (по умолчанию ENT_COMPAT ):
Таблица 1. Константы quote_style
Имя константы | Описание |
---|---|
ENT_COMPAT | Преобразуются двойные кавычки, одиночные остаются без изменений. |
ENT_QUOTES | Преобразуются и двойные, и одиночные кавычки. |
ENT_NOQUOTES | И двойные, и одиночные кавычки остаются без изменений. |
Необязательный третий аргумент charset определяет кодировку, используемую при преобразовании. По умолчанию используется кодировка ISO-8859-1.
Начиная с PHP 4.3.0 поддерживаются следующие кодировки.
Таблица 2. Поддерживаемые кодировки
Кодировка | Псевдонимы | Описание |
---|---|---|
ISO-8859-1 | ISO8859-1 | Западно-европейская Latin-1 |
ISO-8859-15 | ISO8859-15 | Западно-европейская Latin-9. Добавляет знак евро, французские и финские буквы к кодировке Latin-1(ISO-8859-1). |
UTF-8 | 8-битная Unicode, совместимая с ASCII. | |
cp866 | ibm866, 866 | Кириллическая кодировка, применяемая в DOS. Поддерживается в версии 4.3.2. |
cp1251 | Windows-1251, win-1251, 1251 | Кириллическая кодировка, применяемая в Windows. Поддерживается в версии 4.3.2. |
cp1252 | Windows-1252, 1252 | Западно-европейская кодировка, применяемая в Windows. |
KOI8-R | koi8-ru, koi8r | Русская кодировка. Поддерживается в версии 4.3.2. |
BIG5 | 950 | Традиционный китайский, применяется в основном на Тайване. |
GB2312 | 936 | Упрощенный китайский, стандартная национальная кодировка. |
BIG5-HKSCS | Расширенная Big5, применяемая в Гонг-Конге. | |
Shift_JIS | SJIS, 932 | Японская кодировка. |
EUC-JP | EUCJP | Японская кодировка. |
Замечание: Не перечисленные выше кодировки не поддерживаются, и вместо них применяется ISO-8859-1.
Пример 1. Декодирование HTML сущностей
= «I’ll \»walk\» the dog now» ;
(PHP 4 >= 4.3.0, PHP 5, PHP 7) html_entity_decode — Преобразует все HTML-сущности в соответствующие символы ОписаниеСписок параметровБитовая маска, состоящая из одного или более флагов, которые указывают как обращаться с кавычками и какой тип документа использовать. По умолчанию маска принимает значение ENT_COMPAT | ENT_HTML401.
Необязательный аргумент определяющий кодировку, используемую при конвертации симоволов. Если не указан, то значением по умолчанию для encoding зависит от используемой версии PHP. В PHP 5.6 и старше, для значения по умолчанию используется конфигурационная опция default_charset. В PHP 5.4 и 5.5 используется UTF-8 по умолчанию. Более ранние версии PHP используют ISO-8859-1. Хотя этот аргумент является технически необязательным, настоятельно рекомендуется указать правильное значение для вашего кода, если вы используете PHP 5.5 или выше, или если ваша опция конфигурации default_charset может быть задана неверно для входных данных. Поддерживаются следующие кодировки:
Возвращаемые значенияВозвращает раскодированную строку. Список измененийПримерыПример #1 Декодирование HTML-сущностей = «I’ll \»walk\» the dog now» ; ПримечанияМожет показаться странным, что результатом вызова trim(html_entity_decode(‘ ‘)); не является пустая строка. Причина том, что ‘ ‘ преобразуется не в символ с ASCII-кодом 32 (который удаляется функцией trim() ),а в символ с ASCII-кодом 160 (0xa0) в принимаемой по умолчанию кодировке ISO-8859-1. Смотрите такжеhtmlentities(PHP 4, PHP 5, PHP 7, PHP 8) htmlentities — Преобразует все возможные символы в соответствующие HTML-сущности ОписаниеЭта функция идентична htmlspecialchars() за исключением того, что htmlentities() преобразует все символы в соответствующие HTML-сущности (для тех символов, для которых HTML-сущности существуют). Список параметровНеобязательный аргумент, определяющий кодировку, используемую при конвертации символов. Если не указан, то значение по умолчанию для encoding зависит от конфигурационной опции default_charset. Хотя этот аргумент является технически необязательным, настоятельно рекомендуется указать правильное значение для вашего кода, опция конфигурации default_charset может быть задана неверно для входных данных. Поддерживаются следующие кодировки:
Возвращаемые значенияВозвращает преобразованную строку. Список измененийПримерыПример #1 Пример использования htmlentities() Пример #2 Использование ENT_IGNORE Смотрите такжеUser Contributed Notes 21 notesAn important note below about using this function to secure your application against Cross Site Scripting (XSS) vulnerabilities. When printing user input in an attribute of an HTML tag, the default configuration of htmlEntities() doesn’t protect you against XSS, when using single quotes to define the border of the tag’s attribute-value. XSS is then possible by injecting a single quote: [ ‘a’ ] = «#000′ onload=’alert(document.cookie)» ; XSS possible (insecure): I’ve seen lots of functions to convert all the entities, but I needed to do a fulltext search in a db field that had named entities instead of numeric entities (edited by tinymce), so I searched the tinymce source and found a string with the value->entity mapping. So, i wrote the following function to encode the user’s query with named entities. The string I used is different of the original, because i didn’t want to convert ‘ or «. The string is too long, so I had to cut it. To get the original check TinyMCE source and search for nbsp or other entity 😉 If you are building a loadvars page for Flash and have problems with special chars such as » & «, » ‘ » etc, you should escape them for flash: Try trace(escape(«&»)); in flash’ actionscript to see the escape code for &; The flag ENT_HTML5 also strips newline chars like \n with htmlentities while htmlspecialchars is not affected by that. If you want to use nl2br on that string afterwards you might end up searching the problem like i did. This does not apply to other flags like e.g. ENT_XHTML which confused me. Tested this with PHP 5.4 / 5.5 / 5.6-dev with same results, so it seems that this is an intended «feature». For those Spanish (and not only) folks, that want their national letters back after htmlentities 🙂 The following will make a string completely safe for XML: html_entity_decode(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8) html_entity_decode — Преобразует HTML-сущности в соответствующие им символы ОписаниеСписок параметровНеобязательный аргумент, определяющий кодировку, используемую при конвертации символов. Если не указан, то значение по умолчанию для encoding зависит от конфигурационной опции default_charset. Хотя этот аргумент является технически необязательным, настоятельно рекомендуется указать правильное значение для вашего кода, опция конфигурации default_charset может быть задана неверно для входных данных. Поддерживаются следующие кодировки:
strip_tags(PHP 4, PHP 5, PHP 7, PHP 8) strip_tags — Удаляет теги HTML и PHP из строки ОписаниеСписок параметровВторой необязательный параметр может быть использован для указания тегов, которые не нужно удалять. Они указываются как строка ( string ) или как массив ( array ) с PHP 7.4.0. Смотрите пример ниже относительно формата этого параметра. Возвращаемые значенияВозвращает строку без тегов. Список изменений
ПримерыПример #1 Пример использования strip_tags() // Начиная с PHP 7.4.0, строка выше может быть записана как: Результат выполнения данного примера: ПримечанияЭта функция не должна использоваться для предотвращения XSS-атак. Используйте более подходящие функции для этой задачи, такие как htmlspecialchars() или другие механизмы, в зависимости от контекста вывода. Из-за того, что strip_tags() не проверяет валидность HTML, то частичные или сломанные теги могут послужить удалением большего количества текста или данных, чем ожидалось. Смотрите такжеUser Contributed Notes 17 notesHi. I made a function that removes the HTML tags along with their contents: Result for strip_tags($text): Result for strip_tags_content($text): Result for strip_tags_content($text, ‘‘): Result for strip_tags_content($text, ‘‘, TRUE); I hope that someone is useful 🙂 After upgrading from v7.3.3 to v7.3.7 it appears nested «php tags» inside a string are no longer being stripped correctly by strip_tags(). This is still working in v7.3.3, v7.2 & v7.1. I’ve added a simple test below. A word of caution. strip_tags() can actually be used for input validation as long as you remove ANY tag. As soon as you accept a single tag (2nd parameter), you are opening up a security hole such as this: Plus: regexing away attributes or code block is really not the right solution. For effective input validation when using strip_tags() with even a single tag accepted, http://htmlpurifier.org/ is the way to go. Since strip_tags does not remove attributes and thus creates a potential XSS security hole, here is a small function I wrote to allow only specific tags with specific attributes and strip all other tags and attributes. If you only allow formatting tags such as b, i, and p, and styling attributes such as class, id and style, this will strip all javascript including event triggers in formatting tags. Note that allowing anchor tags or href attributes opens another potential security hole that this solution won’t protect against. You’ll need more comprehensive protection if you plan to allow links in your text. a HTML code like this: $str = ‘color is bluesize is huge $str = ‘color is blue size is huge material is wood’; «5.3.4 strip_tags() no longer strips self-closing XHTML tags unless the self-closing XHTML tag is also given in allowable_tags.» This is poorly worded. The above seems to be saying that, since 5.3.4, if you don’t specify « What it means is, in versions prior to 5.3.4, it «strips self-closing XHTML tags unless the self-closing XHTML tag is also given in allowable_tags», and that since 5.3.4 this is no longer the case. So what reads as «no longer strips self-closing tags (unless the self-closing XHTML tag is also given in allowable_tags)» is actually saying «no longer (strips self-closing tags unless the self-closing XHTML tag is also given in allowable_tags)». pre-5.3.4: strip_tags(‘Hello World ‘,’ 5.3.4 and later: strip_tags(‘Hello World ‘ // does not strip Note the different outputs from different versions of the same tag: Features: Caution: the function doesn’t fully validate tags (the more so HTML itself), it just force strips those obviously broken (in addition to stripping forbidden tags). If you want to get valid tags then use strip_attrs option, though it doesn’t guarantee tags are balanced or used in the appropriate context. For complex logic consider using DOM parser. Here is a recursive function for strip_tags like the one showed in the stripslashes manual page.
|