php - 输出html标签

标签 php html escaping

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

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

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

*[img]图片网址[/img]*

然后换行。

然后我找到了解决办法:

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

我的问题是: 为什么单引号没有像我想象的那样按字面意思输出字符串,有没有其他方法可以让我不必编写所有这些 <>

最佳答案

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

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

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

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

关于php - 输出html标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8630675/

相关文章:

javascript - 这是查看是否在 javascript 中使用 php 设置 2 个 cookie 的有效方法

javascript - 无法以 Angular 加粗表格的 td 标签内的特定单词

javascript - 如何将innerHTML添加到打印页面

java - 正则表达式和转义和未转义的定界符

c++ - 如何在 C++ 宏参数中使用括号?

php - 添加两个小时到日期变量

php - 可能被盗的本地网络服务器上的双向加密

php - 将表从 MySQL 同步到 MSSQL

html - 子菜单飞出并粘在页面顶部的垂直菜单

html - 我如何从这个 Rails 路由/助手输出原始的未转义的 html?