我正在尝试将PHP文件中的sprintf(' href="%s%s"', ..., ...)
替换为其Twig替代方案。我想使用Twig的插值功能,但是字符串表达式必须用双引号包裹,并且包含href属性值周围的嵌入引号。
有没有办法做到这一点?文档在这方面似乎非常简略。
{{ " href=\"#{{value1}}{{value2}}\"" }}
我正在尝试将PHP文件中的sprintf(' href="%s%s"', ..., ...)
替换为其Twig替代方案。我想使用Twig的插值功能,但是字符串表达式必须用双引号包裹,并且包含href属性值周围的嵌入引号。
有没有办法做到这一点?文档在这方面似乎非常简略。
{{ " href=\"#{{value1}}{{value2}}\"" }}
最佳解决方案是:
href="{{value1}}{{value2}}"
这样做,无论是value1还是value2都将安全地转义HTML特殊字符。而且你的双引号将直接被输出。
为什么你的方法是不好的实践:
你想要做的是(这两个是等价的):
{{ " href=\"#{value1}#{value2}\"" }}
或者
{{ ' href="'~value1~value2~'"' }}
"
。{{ 'href="'~value1~value2~'"' | raw}}
但是这种方法存在危险,因为value1和value2将不再进行html转义,您会面临XSS攻击的风险。
"
字符,你需要对该字符进行转义处理。{{ " href=\"#{value1}#{value2)\"" }}
但这不是一个好主意
更好的方法是直接将您的值包含在属性中,如下:
<a href="{{url}}">Some link</a>
<a href="{{value1~value2}}">Some link</a>