输出html标签

cik*_*omo 1 html php escaping

我想用echo,html标签输出.首先代码是这样的:

$image = '[img]'."image_url".'[/img]<BR>';
Run Code Online (Sandbox Code Playgroud)

但这不起作用,因为输出是:

*[IMG] IMAGE_URL [/ IMG]*

然后闯入新的界限.

然后我找到了解决方案:

$image = '[img]'."image_url".'[/img]&ltBR&gt';
Run Code Online (Sandbox Code Playgroud)

我的问题是:为什么单引号不按字面意思输出字符串,因为我认为它们会,并且还有其他任何方式,所以我不必写所有这些&lt&gt

mea*_*gar 6

您的问题来自对PHP和HTML如何工作的基本误解.引号是PHP语法的一部分,不能影响浏览器如何解释引用的字符串,因为浏览器永远不会看到引用的字符串.当PHP代码执行时,引号会消失,只有PHP脚本的输出才会发送到浏览器.

也就是说,引号并不是为了控制字符串中HTML标签的解释.引用样式是关于转义序列的\n\t; 单引号不支持转义序列(除了\'),而双引号将它们解释为文字新行/制表符/等.这两种引用样式都与尖括号和HTML标记无关.

如果你想在浏览器中显示比小于号字面大于和小于,你必须发送浏览器编码的HTML实体&gt;&lt;分别.您可以echo "&gt";通过使用PHP专用于编码字符串中的HTML实体的函数之一来手动输出字符串,或者更常见地输出字符串:

echo htmlspecialchars("x <= y <= z"); # outputs x &lt;= y &lt;= z
echo htmlspecialchars("<br>"); # outputs &lt;br&gt;
Run Code Online (Sandbox Code Playgroud)