Replace 如何替换细枝中的打断线
我想使用TWIG用PHP变量的值填充JavaScript数组Replace 如何替换细枝中的打断线,replace,twig,Replace,Twig,我想使用TWIG用PHP变量的值填充JavaScript数组 <script type="text/javascript"> var cont=new Array(); {% for key, post in posts %} cont[{{ key }}] = "{{ post.content }}"; {% endfor %} </script> 但这没有帮助。它仍然保留为数不多的管路…有nl2br过滤器:如果您只想拆下制动管路,这将不起作用
<script type="text/javascript">
var cont=new Array();
{% for key, post in posts %}
cont[{{ key }}] = "{{ post.content }}";
{% endfor %}
</script>
但这没有帮助。它仍然保留为数不多的管路…有nl2br过滤器:如果您只想拆下制动管路,这将不起作用:
{{ post.content | replace({"\n":""}) }}
“\”是一个特殊的符号,所以你需要避开它。这将有助于:
{{ post.content | replace({"\\n":""}) }}
使用
{{post.content | nl2br}}
对于类似的问题(将用户数据输出到Javascript),我发现以下内容是必要的:
post.content|replace({"\n":' ', "\r":' '})
即,将\r
以及\n
替换为空格。这是因为一些用户输入的内容(特别是Windows上的用户)可能包含\r
(回车)以及换行符,如果不删除这些换行符,它们似乎仍然会打断Javascript
对我来说,nl2br不合适,因为我将用户内容输入到Javascript方法中(用于将用户输入的地址添加到Google地图中,这是值得的),所以我不想要任何换行符、HTML或其他方式。使用Twig编写Javascript的最佳方法(也是很好的方法)(如果你不想要\r\n
)是这样吗
{{ example|e('js') }}
当然,替换
是可行的,但在使用数据中的数据的javascript中会遇到其他问题。使用javascript escape,它将以您期望的方式完美地编写有效的javascript
有关转义筛选器的详细信息:
必须使用{%spaceless%}{%endspaceless%}标记,如下所示
<script type="text/javascript">
var cont=new Array();
{% for key, post in posts %}
cont[{{ key }}] = "{% spaceless %}{{ post.content }}{% endspaceless %}";
{% endfor %}
</script>
var cont=新数组();
{%为键,在posts%}
cont[{key}}]=“{%spaceless%}{{{post.content}{%endspaceless%}”;
{%endfor%}
享受;-) 不幸的是,这不是JavaScript中上下文转义
\n
和\r
中提问的解决方案,因为twig的nl2br
过滤器是PHP中nl2br()
函数的简单回退,它根本不会替换\n
和\r
字符,但是将它们替换为
\n\r
,因此代码中仍然有空格。唯一正确的方法是:{{post.content}replace({'\r\n':'\\r\\n','\n':'\\n','\r':'\\r'}}
您现在还可以使用反勾号(模板文字)将带有换行符的代码放入JavaScript字符串中。
<script type="text/javascript">
var cont=new Array();
{% for key, post in posts %}
cont[{{ key }}] = "{% spaceless %}{{ post.content }}{% endspaceless %}";
{% endfor %}
</script>