24

TWIG を使用して、JavaScript 配列に PHP 変数の値を入力したいと考えています。

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

問題は、post複数行の変数があるため、上記のコードでは JS コマンドが数行に分割され、複数のコマンドとして変換され、エラーが発生することです。

したがって、すべての「改行」を「\n」に置き換える必要があると思います。

私はこのようにしようとしました:

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

しかし、それは役に立ちません。まだ数行のままです…</p>

4

6 に答える 6

30

同様の問題(ユーザーデータをJavascriptに出力する)については、次のことが必要であることがわかりました。

post.content|replace({"\n":' ', "\r":' '})

すなわち。スペース\rと同様に置き換えます。\nこれは、一部のユーザーが入力したコンテンツ (特に Windows のユーザーの場合) に\r(改行) と改行が含まれている可能性があり、削除しないと Javascript が壊れてしまうように見えるためです。

私にとっては、nl2br は適切ではありませんでした。ユーザー コンテンツを Javascript メソッド (ユーザーが入力した住所を Google マップに追加するためのメソッド) にフィードしていたため、改行、HTML、またはそれ以外は。

于 2014-11-18T10:09:39.877 に答える
22

Twig を使用して JavaScript を記述する最良の方法 (および良い方法)\r\nは、次の方法です。

{{ example|e('js') }}

もちろん、置換<br />は機能しますが、データからのデータを使用して JavaScript で他の問題が発生する可能性があります。JavaScriptエスケープを使用すると、期待どおりに有効なJavaScriptを完全に記述できます。

エスケープ フィルタの詳細については、次を参照してください。

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

于 2015-10-22T20:30:11.810 に答える
11

nl2brフィルターがあります:http://twig.sensiolabs.org/doc/filters/nl2br.html

于 2012-06-12T09:56:20.770 に答える