输出html标签

时间:2011-12-25 17:35:09

标签: php html escaping

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

$image = '[img]'."image_url".'[/img]<BR>';

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

* [IMG] IMAGE_URL [/ IMG] *

然后进入新的界限。

然后我找到了解决方案:

$image = '[img]'."image_url".'[/img]&ltBR&gt';

我的问题是: 为什么单引号不会像我认为的那样按字面输出字符串,还有其他任何方式,所以我不必编写所有&lt&gt吗?

4 个答案:

答案 0 :(得分:6)

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

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

如果您希望浏览器显示大于和小于标志的文字,则必须分别向浏览器发送编码的HTML实体&gt;&lt;。你可以通过手动输出像echo "&gt";这样的字符串来实现这一点,或者更常见的是,使用一个专门用于编码字符串中的HTML实体的PHP函数:

echo htmlspecialchars("x <= y <= z"); # outputs x &lt;= y &lt;= z
echo htmlspecialchars("<br>"); # outputs &lt;br&gt;

答案 1 :(得分:2)

它不依赖于引号。它将按原样打印(html标签),直到将其转换为html实体。请参阅 htmlentities

答案 2 :(得分:0)

HTML使用&lt;&gt;标记标记不是[],您必须将URL作为属性src传递。

$image = '<img src="'."image_url".'" /><BR>';

答案 3 :(得分:0)

你可以htmlspecialchars('<BR>')