Перейти к содержимому

Php вывести html код как текст

  • автор:

htmlspecialchars_decode

Эта функция — антипод функции htmlspecialchars() . Она преобразовывает специальные HTML-сущности обратно в символы.

Конвертируемые сущности: & , " (когда ENT_NOQUOTES не установлена), ' (когда ENT_QUOTES установлена), < и > .

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

Строка, которую надо преобразовать.

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

Доступные константы, используемые в качестве параметра flags

Имя константы Описание
ENT_COMPAT Преобразовает двойные кавычки и пропускает одинарные.
ENT_QUOTES Преобразовает и двойные, и одинарные кавычки.
ENT_NOQUOTES Не преобразовает ни двойные, ни одинарные кавычки.
ENT_SUBSTITUTE Заменяет некорректные кодовые последовательности символом замены Юникода U+FFFD в случае использования UTF-8 и &#FFFD; при использовании другой кодировки, вместо возврата пустой строки.
ENT_HTML401 Обрабатывать код как HTML 4.01.
ENT_XML1 Обрабатывать код как XML 1.
ENT_XHTML Обрабатывать код как XHTML.
ENT_HTML5 Обрабатывать код как HTML 5.

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

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

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

Версия Описание
8.1.0 Значение по умолчанию параметра flags изменено с ENT_COMPAT на ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401 .

Примеры

Пример #1 Пример использования функции htmlspecialchars_decode()

echo htmlspecialchars_decode ( $str );

// обратите внимание, что в данном случае кавычки не будут преобразованы
echo htmlspecialchars_decode ( $str , ENT_NOQUOTES );
?>

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

this -> "

this -> "

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

  • htmlspecialchars() — Преобразовывает специальные символы в HTML-сущности
  • html_entity_decode() — Преобразовывает HTML-сущности в символы
  • get_html_translation_table() — Возвращает таблицу преобразований, используемую функциями htmlspecialchars и htmlentities

User Contributed Notes 8 notes

15 years ago

The example for «htmlspecialchars_decode()» below sadly does not work for all PHP4 versions.

Quote from the PHP manual:
«get_html_translation_table() will return the translation table that is used internally for htmlspecialchars() and htmlentities().»

But it does NOT! At least not for PHP version 4.4.2.
This was already reported in a bug report (http://bugs.php.net/bug.php?id=25927), but it was marked as BOGUS.

Proof:
Code:
———————
var_dump ( get_html_translation_table ( HTML_SPECIALCHARS , ENT_QUOTES ));
var_dump ( htmlspecialchars ( ‘\» , ENT_QUOTES ));
?>
———————

This comment now is not to report this bug again (though I really believe it is one), but to complete the example and warn people of this pitfall.

To make sure your htmlspecialchars_decode fake for PHP4 works, you should do something like this:

function htmlspecialchars_decode ( $string , $style = ENT_COMPAT )
$translation = array_flip ( get_html_translation_table ( HTML_SPECIALCHARS , $style ));
if( $style === ENT_QUOTES )< $translation [ ''' ] = '\'' ; >
return strtr ( $string , $translation );
>
?>

Br, Thomas

18 years ago

that works also with ä and " and so on.
get_html_translation_table(HTML_ENTITIES) => offers more characters than HTML_SPECIALCHARS

function htmlspecialchars_decode_PHP4($uSTR)
return strtr($uSTR, array_flip(get_html_translation_table(HTML_ENTITIES, ENT_QUOTES)));
>

17 years ago

This should be the best way to do it.
(Reposted because the other one seems a bit slower and because those who used the code under called it htmlspecialchars_decode_php4)

if ( ! function_exists ( ‘htmlspecialchars_decode’ ) )
function htmlspecialchars_decode ( $text )
return strtr ( $text , array_flip ( get_html_translation_table ( HTML_SPECIALCHARS )));
>
>

13 years ago

Keep in mind that you should never trust user input — particularly for «mixed-bag» input containing a combination of plain text and markup or scripting code.

Well, consider someone sending ‘&‘ to your PHP script:

$var = «&» ;
$var = ( htmlspecialchars_decode ( $var ) == $var ) ? htmlspecialchars ( $var ) : $var ;
echo $var ;
?>

Since ‘&’ decodes into ‘&’, (htmlspecialchars_decode($var) == $var) will be -false-, thus returning $var without that it’s escaped. In consequence, the script-tags are untouched, and you’ve just opened yourself to XSS.

There is, unfortunately, no reliable way to determine whether HTML is escaped or not that does not come with this caveat that I know of. Rather than try and catch the case ‘I’ve already encoded this’, you are better off avoiding double-escaping by simply escaping the HTML as close to the actual output as you can muster, e.g. in the view in an MVC development structure.

14 years ago

If you use `htmlspecialchars()` to change things like the ampersand (&) into it’s HTML equivalent (&), you might run into a situation where you mistakenly pass the same string to the function twice, resulting in things appearing on your website like, as I call it, the ampersanded amp; «&». Clearly nobody want’s «&» on his or her web page where there is supposed to be just an ampersand. Here’s a quick and easy trick to make sure this doesn’t happen:

$var = «This is a string that could be passed to htmlspecialchars multiple times.» ;

if ( htmlspecialchars_decode ( $var ) == $var ) $var = htmlspecialchars ( $var );
>

?>

Now, if your dealing with text that is a mixed bag (has HTML entities and non-HTML entities) you’re on your own.

Как вывести HTML внутри PHP

Admin 15.03.2017 , обновлено: 14.09.2017 PHP, WordPress

В процессе работы над созданием или редактированием сайтов часто возникает необходимость вывести информацию внутри PHP кода. Разберем варианты вывода HTML внутри PHP.

Как вывести html между двумя другими PHP кодами

Чтобы вывести html между двумя PHP кодами нужна следующая конструкция:

Альтернативный вывод HTML внутри PHP

echo

HTML код или любой текст

HTML;
>
?>

Как вывести PHP внутри функции

Следующая конструкция позволяет положить любой html и php код внутрь описываемой функции:

Как вывести html код ТЕКСТОМ?

Я рекомендовал с позиции что проще оборачивать «угловые скобки» в спан чем запоминать шифры «сущностей», при этом код не теряет в читабельности как с «сущностями».

18 июл 2018 в 3:40

Это может быть и проще, но 1. плодит лишний код; 2. получаем невалидный код; который может выводиться в браузер либо как мы ожидаем либо с ошибками

18 июл 2018 в 4:55

1) На PHP можно функцию выше использовать, но на голом HTML предложенный код, помогающий решить задачу не может стать лишним. 2) Едва ли тег созданный для оформления текста, может повлиять на валидность при его использовании для оформления текста.

23 июл 2018 в 8:25

Тег не влияет. На валидность влияет наличие неэкранированных знаков < , >и & и единственно правильный метод их экранирования в html — замена на сущности

PHP: Вывод текста

В PHP есть два основных способа вывода данных: echo и print .

echo и print в принципе делают одно и то же — выводят данные на экран, но всё же имеют и некоторые отличия друг от друга. echo не имеет возвращаемого значения и может принимать несколько аргументов. print при использовании возвращает 1, поэтому может быть использован в выражениях, и принимает только один аргумент.

echo

Обратите внимание, что echo можно писать двумя способами с круглыми скобками и без них: echo или echo() . Если вы используете синтаксис с круглыми скобками, то передать можно только один аргумент. При использовании синтаксиса без скобок, можно передавать несколько аргументов, разделяя их запятыми.

Следующий пример показывает, как выводить текст с помощью echo. Обратите внимание, что текст может содержать HTML разметку.

PHP это легко!"; echo "Сейчас я изучаю PHP!
"; echo "Эта ", "строка ", "была ", "сделана", " из нескольких аргументов."; ?>

Теперь рассмотрим вывод текста вместе с переменным:

$txt1"; echo "Сейчас я изучаю PHP на $txt2
"; echo $x + $y; ?>

print

print , так же как и echo можно писать в двух вариантах (со скобками и без них): print или print() . Но в отличие от echo , какой бы вариант написания вы ни выбрали, print может принять только один аргумент.

Следующий пример показывает, как выводить текст с помощью print . Обратите внимание, что текст может содержать HTML разметку.

PHP это легко!"; print "Сейчас я изучаю PHP!
"; print "И мне это нравится."; ?>

Теперь рассмотрим вывод текста вместе с переменным:

$txt1"; print "Сейчас я изучаю PHP на $txt2
"; print $x + $y; ?>

Копирование материалов с данного сайта возможно только с разрешения администрации сайта
и при указании прямой активной ссылки на источник.
2011 – 2024 © puzzleweb.ru | razumnikum.ru

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

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