【问题标题】:Handling strings with linebreaks in vars在 vars 中处理带有换行符的字符串
【发布时间】:2011-11-21 10:14:13
【问题描述】:

我正在尝试再次获得它。

我有一个 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 似乎无法识别不止一行的字符串。

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

感谢您的帮助;)

【问题讨论】:

    标签: php javascript line-breaks


    【解决方案1】:

    试试这个,如果你在 Javascript 行的末尾使用 \,你可以在一个字符串中使用多行。

    <?php
        $phpvar = "a text with
        a linebreak";
        echo "<script type='text/javascript'>
            var test;
            test = '" . str_replace("\n", "\\\n",$phpvar) . "';
        </script>";
    ?>
    

    【讨论】:

    • 可能替换为\\\n,因为需要一个\,即\\和\n
    • 但这不会将实际的换行符放入 JS 字符串中,它只会让字符串文字超过几行。如果打算让字符串包含换行符,请将\n 替换为\\n,这样当浏览器看到它时,它是一个反斜杠字符,后跟一个n
    【解决方案2】:

    在 php 中转义:

    js:           php:
    <linebreak>   \n
    \             \\
    \n            \\n
    

    如果你想要这个:

    var test = "te\
    st";
    console.log(test) > "test"
    

    在这种情况下,您需要使用\&lt;linebreak&gt;(在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,但不在 javascript 中


    但是如果你想像这样在 javascript 中保留换行符:

    console.log(test) > "te
                         st"
    

    您需要将\n 添加为转义字符串,而不是换行符。 所以代码会是这样的

    var test = "te\n\
    st"
    console.log(test) > "te
                         st" 
    

    在这种情况下,您需要 \n\&lt;linebeak&gt;(在 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 中添加换行符

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-12
      • 2010-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-19
      • 2013-10-24
      相关资源
      最近更新 更多