存储在javascript变量中的php字符串变量中的“\ n”会导致换行

时间:2015-09-30 17:32:25

标签: javascript php

例如我的php字符串变量包含

$code="#include<iostream>   using namespace std;

void main() { 

cout<<"Hello world \n"; 

}"

然后在javascript中,当我做

var text=<?php echo json_encode($code); ?> 

console.log(text);

然后它给出输出

"#include<iostream>

using namespace std;

void main(){

cout<<"Hello world

";

}"

在下一行中使用终止反引号。 我该怎么办。

4 个答案:

答案 0 :(得分:2)

让我们从所需的输出向后移动到生成输出。您希望camelCase显示包含console.log的值:

\n

这意味着JavaScript代码中的字符串文字必须类似于

"foo\nbar"

var text = '"foo\\nfoo"'; 已经为我们处理了引号,所以我们需要做的就是生成一个字符串包含json_encode的PHP字符串。

根据您生成字符串的方式,有几种方法:

\\n

或者,您可以使用addcslashes来转义字符串中的任何现有// single quotes $code = 'foo\\\nbar'; // double quotes $code = "foo\\\\nbar"; // heredoc (same as double quotes) $code = <<<CODE foo\\\\nbar CODE;

\

答案 1 :(得分:1)

当你将字符串分配给'code'变量时,要么转义反斜杠,如下所示:

cout<<"Hello world \\n";

...或者在打印字符串之前替换换行符:

console.log(text.replace(/\n/,"\\n"));

答案 2 :(得分:1)

由于包装代码似乎是C ++,您可以用C ++常量\n替换endl

结果将是

$code="#include<iostream>   using namespace std;

void main() { 

cout<<\"Hello world \"<<endl; 

}"

答案 3 :(得分:0)

这可以使用反斜杠字符

来完成
{# render opening form tag #}
{{ form_start(form) }}
{# render field with label #}
{{ form_row(form.name) }}
{# render only field #}
{{ form_widget(form.comment) }}
{# render only label #}
{{ form_label(form.amount) }}

{# render only field #}
{{ form_widget(form.amount) }}

{# if csrf token is enabled for form render field #}
{% if form._token is defined %}
{{ form_widget(form._token) }}
{% endif %}

{# render closing form tag and do not render rest form elements #}
{{ form_end(form, {'render_rest': false}) }}