我想再试一次。
我有一个JS var,看起来像这样:
var test;
现在我用PHP编写一些JS:
<?php
$phpvar = "a text with
a linebreak";
echo "<script type='text/javascript'>
var test;
test = '" . $phpvar . "';
</script>";
?>
现在,如果我运行它,它将按如下方式输出源:
<script type='text/javascript'>
var test;
test = 'a text with
a linebreak';
</script>
这给了我一个JS异常:
ERROR: unterminated string literal
不知何故,JS似乎没有意识到在一行以上有一个字符串。
如果最终字符串必须再次换行,我怎么能意识到这一点? (所以,如果所有执行完成,我必须有包含所有换行符的字符串)
感谢您的帮助;)
答案 0 :(得分:4)
试试这个,如果你在Javascript行的末尾使用\,你可以在字符串中使用多行。
<?php
$phpvar = "a text with
a linebreak";
echo "<script type='text/javascript'>
var test;
test = '" . str_replace("\n", "\\\n",$phpvar) . "';
</script>";
?>
答案 1 :(得分:1)
在php中转义:
js: php:
<linebreak> \n
\ \\
\n \\n
如果你想要这个:
var test = "te\
st";
console.log(test) > "test"
在这种情况下,您需要使用\
和<linebreak>
(在js中),因此您需要将\n
替换为\\
加\n
(在php中)
<?php
$phpvar = "a text with
a linebreak";
echo "<script type='text/javascript'>
var test;
test = '" . str_replace("\n", "\\\n",$phpvar) . "';
</script>";
?>
这会将换行符保留为php而不是javasccript
但是如果你想在这样的javascript中保留换行符:
console.log(test) > "te
st"
您需要添加\n
作为转义字符串,而不是换行符。
所以代码看起来像这样
var test = "te\n\
st"
console.log(test) > "te
st"
在这种情况下,您需要\n
和\
以及<linebeak>
(以j为单位),因此您需要将\n
替换为{{1}加上\\n
加\\
\n
这会在php中保留换行符,并在javascript中添加换行符