我在尝试使用PHP在HTML中打印出<
>
符号时遇到了麻烦。
我将字符串“<machine>
”附加到变量。
示例:
$output .= " <machine> ";
echo $output;
我尝试使用逃脱,但这没有帮助。有什么建议吗?
答案 0 :(得分:22)
答案 1 :(得分:8)
如果您要输出HTML,则不能只使用 <
和 >
:您必须使用相应的HTML entities: <
和 >
如果您在PHP中有一个字符串并希望通过相应的HTML实体自动替换这些字符,那么您会对htmlspecialchars()
函数(引用)感兴趣:
执行的翻译是:
- 当
'&'
(&符号)变为'&'
'"'
没有时,'"'
(双引号)变为ENT_NOQUOTES
集。"'"
(单引号)仅在'''
时变为ENT_QUOTES
集。'<'
(小于)变为'<'
'>'
(大于)变为'>'
在您的情况下,代码的一部分像这样:
$ output =“”;
echo htmlspecialchars($output, ENT_COMPAT, 'UTF-8');
会为您提供以下HTML代码作为输出:
<machine>
而且,以防万一,如果你想编码更多的字符,你应该看一下htmlentities()
函数。
答案 2 :(得分:2)
您的问题不在于PHP,而在于HTML中使用了<
和>
。如果您希望它们显示在浏览器中,您可能希望打印出它们的转义实体版本:
<
是<
>
是>
您还可以使用htmlspecialchars()
功能自动转换它们:
echo htmlspecialchars("<machine>");
答案 3 :(得分:1)
你需要把它们变成例如<
和>
- 请参阅htmlentities()
或htmlspecialchars()
函数。
答案 4 :(得分:1)
echo htmlentities($output);
或
echo htmlspecialchars($output);
如果您不想手动浏览字符串并替换实体。
答案 5 :(得分:0)
使用“ htmlspecialchars_decode()”
例如
<?php
$a= htmlspecialchars('<?php ');
$a=$a.htmlspecialchars('echo shell_exec("ipconfig"); ');
$a=$a.htmlspecialchars('?>');
echo htmlspecialchars_decode($a);
?>
答案 6 :(得分:-1)
&lt;和&gt;符号应显示在HTML源代码中,但“&lt; machine&gt;”被解释为XML标记。使用htmlentities()将String中的所有特殊字符转换为HTML等价物,或使用“&amp; lt; machine&amp; gt;”
<强>解决方案:强>
$output .= " <machine> ";
$output = htmlentites($output);
echo $output;