gpt4 book ai didi

google-apps-script - 模板化 HTML scriptlet 中的换行符

转载 作者:行者123 更新时间:2023-12-04 00:42:26 46 4
gpt4 key购买 nike

如果我有一个 HTML 文件 test.html:

<p><?= str ?></p>

还有一个脚本函数:

var t = HtmlService.createTemplateFromFile("test.html");
t.str = "test\nstring";
var content = t.evaluate().setSandboxMode(...).getContent();
Logger.log(content);

有没有办法安全地用 HTML 换行符替换换行符?我可以使用 String.prototype.replace() 来替换 \n<br/> ,但我必须使用 <?!=禁用 HTML 模板引擎的上下文转义。我正在处理不受信任的输入,因此我需要对换行符进行转义和智能处理。在上下文中使用它会很好。就目前情况而言,我编写了自己的转义器,但它只适用于一种情况。

最佳答案

我看到您的场景有两个选项,简单的一个是完全忘记替换并使用

 标签,这将呈现您的换行符(和其他格式字符)

<pre> <?= str ?> </pre>

第二个是执行替换并使用自定义函数清理您的输入,以便您可以安全地使用强制打印脚本。

在您的 html 中:

<?!= sanitize(str); ?>

在你的 .gs 中:

function sanitize(val){
var vals = val.split('\n'); //split string into an array on newlines
for(var i in vals){
vals[i] = Encoder.htmlEncode(vals[i]); //sanitize each element in the array
}
return vals.join('<br />'); //join the elements as a string, with <br /> as glue.
}

请注意,在我的示例中,我使用位于此处的库来清理字符串:http://www.strictly-software.com/scripts/downloads/encoder.js

关于google-apps-script - 模板化 HTML scriptlet 中的换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28511406/

46 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com