Как вывести 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;
>
?>?php>
Как вывести PHP внутри функции
Следующая конструкция позволяет положить любой html и php код внутрь описываемой функции:
htmlspecialchars_decode
Эта функция является антиподом htmlspecialchars() . Она преобразует специальные HTML-сущности обратно в соответствующие символы.
Конвертируемые сущности: & , " (когда ENT_NOQUOTES не установлена), ' (когда ENT_QUOTES установлена), < и > .
Список параметров
Строка, которую надо преобразовать.
Битовая маска из одного или нескольких следующих флагов, которые указывают как обрабатывать кавычки и какие типы документов использовать. Значением по умолчанию является ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401 .
| Имя константы | Описание |
|---|---|
| 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.