撇号转换为' 在树枝上

Ata*_*CSE 5 html string special-characters symfony twig

这个问题在此之前已被提出:

但它并没有解决我的问题.

从撇号数据库中获取数据后,我将其放入文本输入中

c_name='{{company_name}}';
$("#company_name").val(c_name);
Run Code Online (Sandbox Code Playgroud)

它给出了结果

一些Hatchery&Shrimp' s文化公司.

所以我应用了这个问题的解决方案

c_name='{{company_name|raw}}';
$("#company_name").val(c_name);
Run Code Online (Sandbox Code Playgroud)

这给我一个错误

SyntaxError: missing ; before statement 
c_name='some Hatchery & Shrimp's Culture ltd.';
Run Code Online (Sandbox Code Playgroud)

在虾之后和之前显示错误.字符串显然在实际结束并期待之前结束;

所以我再试一次

c_name={{company_name|raw}};

SyntaxError: missing ; before statement
c_name=some Hatchery & Shrimp's Culture ltd.;
Run Code Online (Sandbox Code Playgroud)

现在它在第一个空格之后显示错误,在这种情况下在'H'之前

我的问题是如何处理树枝中的撇号?'| raw'给我带来了麻烦.

dec*_*eze 11

c_name = '{{ company_name|e('js')|raw }}';
Run Code Online (Sandbox Code Playgroud)

由于您处于Javascript上下文中,因此需要为Javascript转义(然后添加raw以避免对HTML进行额外的自动转义).

  • 你不需要原始过滤器,它不会再被转义,所以没有什么可以避免的.还值得一提的是,`e`是`escape`过滤器的简短别名. (2认同)
  • @Maerlyn 文档有不同的说法:*当使用自动转义时,当自动转义策略与 escape__ 过滤器应用的策略相同时,Twig 试图不双重转义变量 __(强调添加)- http://twig。 sensiolabs.org/doc/filters/escape.html (2认同)