-1

我在使用 php.ini 中的n12br()函数创建 JavaScript 变量时遇到了困难。下面是示例代码:

var example = "<?php echo nl2br("line 1 \n line 2") ?>";

这会产生以下输出:

var example = "line 1<br>
    line2"

由于换行导致错误。如何将输出连接到一行?

4

3 回答 3

0

输出JS末尾加分号?

于 2013-10-09T15:46:33.443 回答
0

什么

正如您从您的输出中看到的(也是 CBroe 在评论和PHP 手册中的解释),该函数在换行符(, , , )之前nl2br插入一个新的行标记(<br>或)。<br />\n\r\n\r\r\n

为什么

JS 中不允许使用多行字符串,这会导致语法错误,因为就 JS 引擎而言,字符串尚未终止。

如何

...修理...

幸运的是,很容易创建自己的函数来解决这个问题:

function jsbrml($string){
    return preg_replace('/(\r\n|\n\r|[\r\n])/', "<br />\\\n", $string);
}

function jsbrsl($string){
    return preg_replace('/(\r\n|\n\r|[\r\n])/', "<br />", $string);
}

第一个函数jsbrml将与默认 PHP 执行相同的操作nl2br,只是它将插入 <br />\而不是仅<br />在行尾添加额外的反斜杠,从而允许您在 JS 中使用多行字符串文字。

第二个函数jsbrsl将删除换行符\r和/\n替换<br />.

例子jsbrml

var example = "<?php echo jsbrml("line 1 \n line 2") ?>";

var example = "line1 <br />\
line2";

例子jsbrsl

var example = "<?php echo jsbrsl("line 1 \n line 2") ?>";

var example = "line1 <br /> line2";
于 2013-10-09T16:18:48.657 回答
0
var example = '<?php echo str_replace("\n","\u000a", nl2br("line 1 \n line 2")); ?>';
于 2013-10-09T16:09:30.750 回答