Как вывести html код в php
Перейти к содержимому

Как вывести html код в php

  • автор:

Как вывести HTML из PHP?

Здравствуйте! Подскажите, пожалуйста, как вывести любой HTML код из PHP скрипта? Просто, если выводить обычной командой echo, то будет выводиться просто символы, которые в HTML переводиться не будут.

Отслеживать
51.2k 86 86 золотых знаков 266 266 серебряных знаков 505 505 бронзовых знаков
задан 26 мая 2011 в 11:12
Eugene Shilin Eugene Shilin
307 1 1 золотой знак 7 7 серебряных знаков 22 22 бронзовых знака

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Не совсем понял вопрос. Если вы хотите вывести html из php, то echo все нормально выведет.

выведет ссылку. Если же вам нужно вывести спецсимволы, пропустите текст через htmlspecialchars():

Отслеживать
ответ дан 26 мая 2011 в 11:39
14.7k 1 1 золотой знак 26 26 серебряных знаков 48 48 бронзовых знаков

Знаете что такое uCoz? Я использую этот бесплатный хостнг. Там есть функция создания меню сайта($SMENU_1$). Так вот, в PHP скрипте я вывожу через echo $SMENU_1$, но меню не выводит этот спецсимвол от uCoz, а пишет просто $SMENU_1$ вместо появления менюшки. Надеюсь нормально объяснил.

26 мая 2011 в 11:56

К сожалению, с Юкозом я вам помочь не смогу, так как не работал с его шаблонизатором и не знаю, работает ли там вообще пользовательский php. Да и с точки зрения здравого смысла, echo ‘$SMENU_1$’ — это просто вывод строки $SMENU_1$ в обход шаблонизатора. Лучше просто пропишите в нужном месте шаблона $SMENU_1$.

Как вывести 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 код внутрь описываемой функции:

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.

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

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