Ответ 1
>
= >
<
= <
Или вы можете использовать htmlspecialchars
.
$output .= htmlspecialchars(" <machine> ");
У меня возникают проблемы с попыткой распечатать символы <
>
в HTML с помощью PHP.
Я добавляю строку "<machine>
" к переменной.
Пример:
$output .= " <machine> ";
echo $output;
Я попытался использовать escape-последовательности, но это не помогло. Любые советы?
>
= >
<
= <
Или вы можете использовать htmlspecialchars
.
$output .= htmlspecialchars(" <machine> ");
Если вы выводите HTML, вы не можете просто использовать <
и >
: вы должны использовать соответствующие HTML-объекты: <
и >
Если у вас есть строка в PHP и вы хотите автоматически заменить эти символы соответствующими HTML-сущностями, вас заинтересует функция htmlspecialchars()
(цитирование):
Выполненные переводы:
'&'
(амперсанд) становится'&'
'"'
(двойная кавычка) становится'"'
, когдаENT_NOQUOTES
не набор."'"
(одинарная кавычка) становится'''
только тогда, когдаENT_QUOTES
набор.'<'
(меньше чем) становится'<'
'>'
(больше чем) становится'>'
В вашем случае часть кода, подобная этой:
$ output = "";
echo htmlspecialchars($output, ENT_COMPAT, 'UTF-8');
Получит следующий HTML-код в качестве вывода:
<machine>
И, на всякий случай, если вы хотите кодировать больше символов, вам следует взглянуть на функцию htmlentities()
.
Ваша проблема не в PHP, а скорее в том, что <
и >
используются в HTML. Если вы хотите, чтобы они отображались в браузере, вы, вероятно, захотите распечатать свои версии с сохраненными сущностями:
<
<
>
>
Вы также можете использовать функцию htmlspecialchars()
для автоматического их преобразования:
echo htmlspecialchars("<machine>");
Вам нужно включить их, например. <
и >
- см. функции htmlentities()
или htmlspecialchars()
.
echo htmlentities($output);
или
echo htmlspecialchars($output);
Если вы не хотите беспокоиться о том, чтобы вручную перебирать строку и заменять сущности.
используйте "htmlspecialchars_decode()"
например
<?php
$a= htmlspecialchars('<?php ');
$a=$a.htmlspecialchars('echo shell_exec("ipconfig"); ');
$a=$a.htmlspecialchars('?>');
echo htmlspecialchars_decode($a);
?>
и > символы должны отображаться в источнике HTML, но "<machine> " интерпретируется как XML-тег. Используйте htmlentities() для преобразования всех специальных символов в String в их эквиваленты HTML или используйте "& lt; machine & gt;"
Решение:
$output .= " <machine> ";
$output = htmlentites($output);
echo $output;