输出HTML标签


output html tags

我想用echo直接输出html标记。首先代码是这样的:

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

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

* [img] image_url [/img] *

,然后换行。

然后我找到了一个解决方案:

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

我的问题是:为什么单引号不能像我想象的那样输出字符串有没有别的方法可以让我不用写所有的&lt&gt呢?

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

也就是说,引号不是用来控制字符串中HTML标记的解释的。引用风格为'n't等转义序列;单引号不支持转义序列(''除外),而双引号将它们解释为文字新行/制表符等。这两种quote风格都与尖括号和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;

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

HTML使用<>标记不是[],并且必须将URL作为属性src传递。

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

你可以做htmlspecialchars('<BR>')