如何更换树枝上的断裂线

sh3*_*211 16 replace twig

我想使用TWIG用PHP变量中的值填充JavaScript数组.

<script type="text/javascript">
   var cont=new Array();
   {% for key, post in posts %}
   cont[{{ key }}] = "{{ post.content }}";
   {% endfor %}
</script>
Run Code Online (Sandbox Code Playgroud)

问题是我有post几行变量,所以上面的代码使JS命令分成几行,这被转换为几个命令,我有一个错误.

所以我认为我需要将所有"新行"替换为"\n".

我试着这样做:

cont[{{ key }}] = "{{ post.content | replace({"\n":"<br>"}) }}";
Run Code Online (Sandbox Code Playgroud)

但它没有帮助.它仍然只停留几行......

Nic*_*k F 24

对于类似的问题(将用户数据输出到Javascript),我发现以下是必要的:

post.content|replace({"\n":' ', "\r":' '})
Run Code Online (Sandbox Code Playgroud)

即.替换\r以及\n空格.这是因为一些用户输入的内容(特别是对于Windows上的用户)可能包含\r(回车)以及换行符,如果没有删除它似乎仍会破坏Javascript.

对我来说,nl2br并不适合,因为我将用户内容提供给Javascript方法(用于将用户输入的地址添加到Google Map中,以获得它的价值),所以我不想要任何换行符,HTML或除此以外.


Yan*_*bot 15

使用Twig(如果你不想要\r\n)编写一些javascript的最好方法(和好方法)是这样的:

{{ example|e('js') }}
Run Code Online (Sandbox Code Playgroud)

<br />当然,替换可以起作用,但是您将使用数据中的数据在javascript中遇到其他问题.使用javascript转义,它将以您期望的方式完美地编写有效的javascript.

有关转义过滤器的更多信息:

http://twig.sensiolabs.org/doc/filters/escape.html

  • 这个答案应该标记为正确答案. (4认同)

Woj*_*ski 9

有nl2br过滤器:http://twig.sensiolabs.org/doc/filters/nl2br.html

  • 不幸的是,这不是解决上下文中的问题,在JavaScript中转义`\n`和`\ r``,因为twig的`nl2br`过滤器是简单的回退到PHP中的`nl2br()`函数,它不会取代`\n`和`\ r`字符,但用'<br /> \n\r`替换它们,所以空格仍在代码中. (2认同)

小智 7

使用 {{ post.content | nl2br }}


Jar*_*ski 6

如果您只想拆除刹车线,这是行不通的:

{{ post.content | replace({"\n":""}) }}
Run Code Online (Sandbox Code Playgroud)

'\' 是一个特殊符号,因此您需要对其进行转义。这将起作用:

{{ post.content | replace({"\\n":""}) }}
Run Code Online (Sandbox Code Playgroud)