我在使用 php.ini 中的n12br()
函数创建 JavaScript 变量时遇到了困难。下面是示例代码:
var example = "<?php echo nl2br("line 1 \n line 2") ?>";
这会产生以下输出:
var example = "line 1<br>
line2"
由于换行导致错误。如何将输出连接到一行?
我在使用 php.ini 中的n12br()
函数创建 JavaScript 变量时遇到了困难。下面是示例代码:
var example = "<?php echo nl2br("line 1 \n line 2") ?>";
这会产生以下输出:
var example = "line 1<br>
line2"
由于换行导致错误。如何将输出连接到一行?
输出JS末尾加分号?
正如您从您的输出中看到的(也是 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";
var example = '<?php echo str_replace("\n","\u000a", nl2br("line 1 \n line 2")); ?>';