在vars中处理带有换行符的字符串

时间:2011-11-21 10:14:13

标签: php javascript line-breaks

我想再试一次。

我有一个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似乎没有意识到在一行以上有一个字符串。

如果最终字符串必须再次换行,我怎么能意识到这一点? (所以,如果所有执行完成,我必须有包含所有换行符的字符串)

感谢您的帮助;)

2 个答案:

答案 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中添加换行符