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

Php вывести 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

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.

15 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 сущности, как они есть, без преобразования в теги?

Author24 — интернет-сервис помощи студентам

В браузере выводятся теги и текст между ними. Как можно сделать, чтобы выводились HTML-сущности, как они есть без, преобразования в теги?

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Html теги в сущности выводятся как обычный текст
Здраствуйте! недавно столкнулся с такой проблемой: @foreach (var abt in new.

Вывести код как есть (без обработки как html)
может кто нибуть знает у меня есть например такой код <html> <head> <title> test site </title> .

Заменить в тексте, вводимым пользователем, все HTML-сущности, исключая HTML5-теги
Доброе время суток!) надо заменить в тексте вводимый пользователем все html сущности, но при этом.

Для чего нужны сужающие преобразования как они работают и на сколько они важны?
Я читаю одну книгу и застрял на одной теме "Преобразования", и там есть такой вот код double х.

368 / 234 / 68
Регистрация: 19.07.2016
Сообщений: 833

Если вы имеете ввиду виртуальные domNode, php этого вроде бы не может. В вашем скрипте вы уже выводите готовый тег b.

Работать с виртуальными нодами может javaScript.

2175 / 1231 / 598
Регистрация: 23.08.2015
Сообщений: 3,133

ЦитатаСообщение от Fatmarmelad Посмотреть сообщение

Как можно сделать, чтобы выводились HTML-сущности, как они есть без, преобразования в теги?

Не совсем пойму вопрос. htmlspecialchars преобразует специальные символы в html-сущности.
https://htmlweb.ru/html/symbols.php
Т.е. Привет! приведет к <b>Привет!</b>
И пользователь увидит текст с тегами вместо жирного текста. Это необходимо, чтоб не полетела верстка, если строка содержит некорректную верстку (там закрывающий тег или кавычки), либо для защиты от xss-инъекций, когда вместе с текстом могут внедрить js-скрипты.

Если вы хотите выводить html код как он есть — то не используйте htmlspecialchars и все, выводите данные напрямую. Либо если это все-таки пользовательский вывод и у вас есть некий набор разрешенных тегов, то для этого есть специальные библиотеки, к примеру htmlpurifier. Но хочу обратить внимание, что они достаточно ресурсоемкие (есть и более легковесные аналоги, к сожалению, сейчас не вспомню как они называются), и если вам необходимо реализовать пользовательские комментарии, то лучше использовать подход в BBCODE, как собственно реализовано на этом форуме. Это уже разновидности WYSIWYG редакторов — есть те, которые основаны на html (более подходят для админки, так как остается возможность сверстать код напрямую), а есть которые основаны на BBCODE. В таком случае для производительности можно в базе данных хранить 2 поля, где в одном хранится текст с BBCODE, для подстановки в редактор textarea, а другой — чистый html для вывода, который будет формироваться при сохранения комментария в БД.

PHP – Как выбрать текст между тегами

Есть простой способ на пхп, если необходимо обработать HTML код и взять только текст внутри тега.

Забираем текст от и до на PHP

В нашем случае приходит много разного текста из базы данных, в таком виде:

$str = '

Цена элемента составляет 10 000 рублей

';

Необходимо обработать HTML, пишем следующий код, для переменной $str:

$newPrice = preg_match_all('#(.+?)#is', $str, $arr);

После этого можем глянуть что выводится в нашем массиве:

echo '
'; print_r($arr); echo '

';

Вы можете убедится что нам нужен второй элемент массива, его самое первое значение:
$arr[1][0]
Напомню, в языках программирования отчет идет от 0.

Как убрать все пробелы в строке на PHP

Мы взяли цену, но как число она не подойдет, ведь там пробел. Давайте уберем все пробелы из строки:

$newStr = str_replace(" ", "", $arr[1][0]);

Если вам необходимо поменять тип на числовой, не забывайте ставить в начале (int).

автор: Dmitriy

З 2011 року займаюся веб-розробкою. Зараз я – PHP Full Stack Developer.
Обговорити ваш проект, а також дізнатися більше про мене ви можете на цьому сайті:
dev.forwww.com

Читайте також:

Залишити відповідь Скасувати відповідь

Щоб відправити коментар вам необхідно авторизуватись.

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

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