удалить 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-1ISO8859-1Западно-европейская Latin-1
ISO-8859-15ISO8859-15Западно-европейская Latin-9. Добавляет знак евро, французские и финские буквы к кодировке Latin-1(ISO-8859-1).
UTF-88-битная Unicode, совместимая с ASCII.
cp866ibm866, 866Кириллическая кодировка, применяемая в DOS. Поддерживается в версии 4.3.2.
cp1251Windows-1251, win-1251, 1251Кириллическая кодировка, применяемая в Windows. Поддерживается в версии 4.3.2.
cp1252Windows-1252, 1252Западно-европейская кодировка, применяемая в Windows.
KOI8-Rkoi8-ru, koi8rРусская кодировка. Поддерживается в версии 4.3.2.
BIG5950Традиционный китайский, применяется в основном на Тайване.
GB2312936Упрощенный китайский, стандартная национальная кодировка.
BIG5-HKSCSРасширенная Big5, применяемая в Гонг-Конге.
Shift_JISSJIS, 932Японская кодировка.
EUC-JPEUCJPЯпонская кодировка.

Замечание: Не перечисленные выше кодировки не поддерживаются, и вместо них применяется ISO-8859-1.

Пример 1. Декодирование HTML сущностей

= «I’ll \»walk\» the dog now» ;

Замечание: Может показаться странным, что результатом вызова trim(html_entity_decode(‘ ‘)); не является пустая строка Причина том, что ‘ ‘ преобразуется не в символ с ASCII-кодом 32 (который удаляется функцией trim() ),а в символ с ASCII-кодом 160 (0xa0) в принимаемой по умолчанию кодировке ISO-8859-1.

Источник

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

html_entity_decode — Преобразует все HTML-сущности в соответствующие символы

Описание

Список параметров

Битовая маска, состоящая из одного или более флагов, которые указывают как обращаться с кавычками и какой тип документа использовать. По умолчанию маска принимает значение ENT_COMPAT | ENT_HTML401.

Константы flags

Имя константыОписание
ENT_COMPATПреобразуются двойные кавычки, одиночные остаются без изменений.
ENT_QUOTESПреобразуются и двойные, и одиночные кавычки.
ENT_NOQUOTESИ двойные, и одиночные кавычки остаются без изменений.
ENT_HTML401Обрабатывать код как HTML 4.01.
ENT_XML1Обрабатывать код как XML 1.
ENT_XHTMLОбрабатывать код как XHTML.
ENT_HTML5Обрабатывать код как HTML 5.

Необязательный аргумент определяющий кодировку, используемую при конвертации симоволов.

Если не указан, то значением по умолчанию для encoding зависит от используемой версии PHP. В PHP 5.6 и старше, для значения по умолчанию используется конфигурационная опция default_charset. В PHP 5.4 и 5.5 используется UTF-8 по умолчанию. Более ранние версии PHP используют ISO-8859-1.

Хотя этот аргумент является технически необязательным, настоятельно рекомендуется указать правильное значение для вашего кода, если вы используете PHP 5.5 или выше, или если ваша опция конфигурации default_charset может быть задана неверно для входных данных.

Поддерживаются следующие кодировки:

Поддерживаемые кодировки

КодировкаПсевдонимыОписание
ISO-8859-1ISO8859-1Западно-европейская Latin-1.
ISO-8859-5ISO8859-5Редко используемая кириллическая кодировка (Latin/Cyrillic).
ISO-8859-15ISO8859-15Западно-европейская Latin-9. Добавляет знак евро, французские и финские буквы к кодировке Latin-1(ISO-8859-1).
UTF-88-битная Unicode, совместимая с ASCII.
cp866ibm866, 866Кириллическая кодировка, применяемая в DOS.
cp1251Windows-1251, win-1251, 1251Кириллическая кодировка, применяемая в Windows.
cp1252Windows-1252, 1252Западно-европейская кодировка, применяемая в Windows.
KOI8-Rkoi8-ru, koi8rРусская кодировка.
BIG5950Традиционный китайский, применяется в основном на Тайване.
GB2312936Упрощенный китайский, стандартная национальная кодировка.
BIG5-HKSCSРасширенная Big5, применяемая в Гонг-Конге.
Shift_JISSJIS, SJIS-win, cp932, 932Японская кодировка.
EUC-JPEUCJP, eucJP-winЯпонская кодировка.
MacRomanКодировка, используемая в Mac OS.
»Пустая строка активирует режим определения кодировки из файла скрипта (Zend multibyte), default_charset и текущей локали (см. nl_langinfo() и setlocale() ), в указанном порядке. Не рекомендуется к использованию.

Замечание: Остальные кодировки не поддерживаются, вместо них будет применена кодировка по умолчанию и сгенерировано предупреждение.

Возвращаемые значения

Возвращает раскодированную строку.

Список изменений

Примеры

Пример #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 может быть задана неверно для входных данных.

Поддерживаются следующие кодировки:

Поддерживаемые кодировки

КодировкаПсевдонимыОписание
ISO-8859-1ISO8859-1Западно-европейская Latin-1.
ISO-8859-5ISO8859-5Редко используемая кириллическая кодировка (Latin/Cyrillic).
ISO-8859-15ISO8859-15Западно-европейская Latin-9. Добавляет знак евро, французские и финские буквы к кодировке Latin-1 (ISO-8859-1).
UTF-88-битная Unicode, совместимая с ASCII.
cp866ibm866, 866Кириллическая кодировка, применяемая в DOS.
cp1251Windows-1251, win-1251, 1251Кириллическая кодировка, применяемая в Windows.
cp1252Windows-1252, 1252Западно-европейская кодировка, применяемая в Windows.
KOI8-Rkoi8-ru, koi8rРусская кодировка.
BIG5950Традиционный китайский, применяется в основном на Тайване.
GB2312936Упрощённый китайский, стандартная национальная кодировка.
BIG5-HKSCSРасширенная Big5, применяемая в Гонконге.
Shift_JISSJIS, SJIS-win, cp932, 932Японская кодировка.
EUC-JPEUCJP, eucJP-winЯпонская кодировка.
MacRomanКодировка, используемая в Mac OS.
»Пустая строка активирует режим определения кодировки из файла скрипта (Zend multibyte), default_charset и текущей локали (смотрите nl_langinfo() и setlocale() ) в указанном порядке. Не рекомендуется к использованию.

Замечание: Остальные кодировки не поддерживаются, вместо них будет применена кодировка по умолчанию и сгенерировано предупреждение.

Возвращаемые значения

Возвращает преобразованную строку.

Список изменений

Примеры

Пример #1 Пример использования htmlentities()

Пример #2 Использование ENT_IGNORE

Смотрите также

User Contributed Notes 21 notes

An 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 может быть задана неверно для входных данных.

Поддерживаются следующие кодировки:

Поддерживаемые кодировки

КодировкаПсевдонимыОписание
ISO-8859-1ISO8859-1Западно-европейская Latin-1.
ISO-8859-5ISO8859-5Редко используемая кириллическая кодировка (Latin/Cyrillic).
ISO-8859-15ISO8859-15Западно-европейская Latin-9. Добавляет знак евро, французские и финские буквы к кодировке Latin-1 (ISO-8859-1).
UTF-88-битная Unicode, совместимая с ASCII.
cp866ibm866, 866Кириллическая кодировка, применяемая в DOS.
cp1251Windows-1251, win-1251, 1251Кириллическая кодировка, применяемая в Windows.
cp1252Windows-1252, 1252Западно-европейская кодировка, применяемая в Windows.
KOI8-Rkoi8-ru, koi8rРусская кодировка.
BIG5950Традиционный китайский, применяется в основном на Тайване.
GB2312936Упрощённый китайский, стандартная национальная кодировка.
BIG5-HKSCSРасширенная Big5, применяемая в Гонконге.
Shift_JISSJIS, SJIS-win, cp932, 932Японская кодировка.
EUC-JPEUCJP, eucJP-winЯпонская кодировка.
MacRomanКодировка, используемая в Mac OS.
»Пустая строка активирует режим определения кодировки из файла скрипта (Zend multibyte), default_charset и текущей локали (смотрите nl_langinfo() и setlocale() ) в указанном порядке. Не рекомендуется к использованию.

Замечание: Остальные кодировки не поддерживаются, вместо них будет применена кодировка по умолчанию и сгенерировано предупреждение.

Источник

strip_tags

(PHP 4, PHP 5, PHP 7, PHP 8)

strip_tags — Удаляет теги HTML и PHP из строки

Описание

Список параметров

Второй необязательный параметр может быть использован для указания тегов, которые не нужно удалять. Они указываются как строка ( string ) или как массив ( array ) с PHP 7.4.0. Смотрите пример ниже относительно формата этого параметра.

Возвращаемые значения

Возвращает строку без тегов.

Список изменений

ВерсияОписание
8.0.0allowed_tags теперь допускает значение null.
7.4.0allowed_tags теперь альтернативно принимает массив ( array ).

Примеры

Пример #1 Пример использования strip_tags()

// Начиная с PHP 7.4.0, строка выше может быть записана как:
// echo strip_tags($text, [‘p’, ‘a’]);
?>

Результат выполнения данного примера:

Примечания

Эта функция не должна использоваться для предотвращения XSS-атак. Используйте более подходящие функции для этой задачи, такие как htmlspecialchars() или другие механизмы, в зависимости от контекста вывода.

Из-за того, что strip_tags() не проверяет валидность HTML, то частичные или сломанные теги могут послужить удалением большего количества текста или данных, чем ожидалось.

Смотрите также

User Contributed Notes 17 notes

Hi. I made a function that removes the HTML tags along with their contents:

Result for strip_tags($text):
sample text with tags

Result for strip_tags_content($text):
text with

Result for strip_tags_content($text, ‘‘):
sample text with

Result for strip_tags_content($text, ‘‘, TRUE);
text with

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
material is wood’;

$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 «
» in allowable_tags then «
» will not be stripped. but that’s not actually what they’re trying to say.

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

‘,’
‘) => ‘Hello World
‘ // strips
because it wasn’t explicitly specified in allowable_tags

5.3.4 and later: strip_tags(‘Hello World

‘ // does not strip
because PHP matches it with
in allowable_tags

Note the different outputs from different versions of the same tag:

Features:
* allowable tags (as in strip_tags),
* optional stripping attributes of the allowable tags,
* optional comment preserving,
* deleting broken and unclosed tags and comments,
* optional callback function call for every piece processed allowing for flexible replacements.

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.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *