替换data-description中href中的双引号


Twig - Replacing double quotation in an href inside data-description

我在建立一个包含href的数据描述时遇到了麻烦。存储的值包含双引号,这显然会导致问题,所以我想用单引号替换双引号。这似乎是非常简单的,但我的替换似乎不工作。

<img src="#" data-description="{{ photo.description|replace({'%"%': "'"}) }}"/>

说明如下:

<p>Cool description blah. <a href="http://www.google.com">Google</a></p>

在页面上的结果是:

<img src="# data-description="<p>Cool description blah. <a href='&quot;http://www.google.com'&quot;>Google</a></p>" style="width: 345px; height: 229px;">

双引号不被替换,现在被转义。

如果我尝试raw:

<img src="#" data-description="{{ photo.description|replace({'%"%': "'"}) }}"/>

一切都中断了,最后看起来像这样:

<img src="#" data-description="<p>Cool description blah. <a href='" http:="" www.google.com'"="" style="width: 345px; height: 229px;">
Google
<p></p>
"/&gt;

我的主要问题是,为什么我不能替换双引号?

这个问题似乎与您指定的替换模式有关:您不需要使用%字符(可能doc示例有点困惑,因为示例使用它作为paceholder)。

所以试着这样简单:

<img src="#" data-description="{{ desc|replace({'"':''''})|raw }}"/>

下面是一个工作示例。

希望对您有所帮助

我在使用括号编辑器中接受的版本时遇到了问题。该解决方案完全没有语法高亮显示。然而,下面的代码片段对我来说工作得很好:

{{ desc|replace({'"':"'"})|raw }}