首页  >  文章  >  后端开发  >  为什么我的是``?

为什么我的是``?

Susan Sarandon
Susan Sarandon原创
2024-11-06 21:34:02166浏览

Why is my ``?

不必要的

最近在使用模板生成文件(特别是自述文件和许可证)的开发工具中出现了一个问题。一切都无缝运行,除了 字符不受影响。

为了说明该问题,请考虑以下代码片段:

<code class="pawn">#include <{{.Repo}}></code>

此处,应按预期插入 Repo 参数,结果为:

#include <sometext>

然而,实际结果是:

#include &amp;lt;sometext>

文档分析没有对此行为提供明确的解释。对于 > 来说这似乎不合逻辑。字符保持不受影响,而

解决方案在于理解 html/template 的用途。它专为生成 HTML 输出而设计,提供自动上下文相关转义以防止代码注入。文档明确指出:

html/template 仅用于生成 HTML 输出。它提供与包 text/template 相同的接口,并且只要输出是 HTML,就应该使用它来代替 text/template。

当输出不是 HTML 时,就像这里的自述文件一样,它是使用文本/模板更合适。该模板引擎不会转义数据,解决了不必要的字符转换问题。通过切换到 text/template,实现了预期的输出:

#include <sometext>

html/template 和 text/template 之间的区别确保仅在必要时应用上下文相关的转义,从而防止非预期的字符转换。 -HTML输出场景。

以上是为什么我的是``?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn