在变数中处理带换行符的字符串
问题描述:
我试图再次得到它。在变数中处理带换行符的字符串
我有一个JS变种,看起来像这样:
var test;
现在我写一些JS用PHP:现在
<?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似乎没有认识到在多行上有一个字符串。
如果最后字符串必须再次换行,我怎么能意识到这一点? (所以,如果全部执行完毕,我必须包括所有的换行字符串)
谢谢你的帮助;)
答
试试这个,如果你在一个Javascript行的末尾使用\,可以在一个字符串中使用多行。
<?php
$phpvar = "a text with
a linebreak";
echo "<script type='text/javascript'>
var test;
test = '" . str_replace("\n", "\\\n",$phpvar) . "';
</script>";
?>
答
逃脱在PHP中:
js: php:
<linebreak> \n
\ \\
\n \\n
如果你想这样的:
var test = "te\
st";
console.log(test) > "test"
在这种情况下
你需要使用一个\
和<linebreak>
(在JS),所以你需要将\n
更换为\\
加\n
(in 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>
(在JS),所以你需要更换的\n
到\\n
加\\
加\n
<?php
$phpvar = "a text with
a linebreak";
echo "<script type='text/javascript'>
var test;
test = '" . str_replace("\n", "\\n\\\n",$phpvar) . "';
</script>";
?>
这保持在PHP的换行符,也可以增加内分行的JavaScript
也许会替换为'\\\ n',因为需要一个\\ \\和'\ n' –
这太棒了!谢谢:) –
但是,这不会把实际的换行符放入JS字符串中,它只会让字符串文字突破几行。如果意图是让字符串包含换行符,用'\\ n'替换'\ n',这样当浏览器看到它是一个反斜杠字符后加一个'n'。 – nnnnnn