Javascript nl2br未清除所有新线

Javascript nl2br未清除所有新线,javascript,html,Javascript,Html,因此,我对nl2br有一些奇怪的问题,因此我有以下代码: var infowindow = new google.maps.InfoWindow({ content: "<?= nl2br($store["Stores"]["address"]) ?>" }); var infowindow=new google.maps.infowindow({ 内容:“” }); 查看浏览器源时的输出如下图所示: 正如您所见,已经正确引入,但由于某些原因,该行仍然中断,从而导致ja

因此,我对nl2br有一些奇怪的问题,因此我有以下代码:

var infowindow = new google.maps.InfoWindow({
    content: "<?= nl2br($store["Stores"]["address"]) ?>"
});
var infowindow=new google.maps.infowindow({
内容:“”
});
查看浏览器源时的输出如下图所示:

正如您所见,

已经正确引入,但由于某些原因,该行仍然中断,从而导致javascript错误


变量值是从表单的文本区域输入中发布的内容

nl2br不删除换行符,它只是在换行符之前插入


nl2br不会删除换行符,它只是在换行符前面插入


从中的示例中可以看出,这似乎是预期的行为。如果要替换所有换行符以将字符串转换为一行,则应该使用简单的正则表达式。这是我将尝试的方式(从我的头脑中输入,这是未经测试的):


从中的示例中可以看出,这似乎是预期的行为。如果要替换所有换行符以将字符串转换为一行,则应该使用简单的正则表达式。这是我将尝试的方式(从我的头脑中输入,这是未经测试的):


这是你的答案

var infowindow = new google.maps.InfoWindow({
    content: <>"<?= nl2br($store["Stores"]["address"]) ?>"</>.toString()
});
var infowindow=new google.maps.infowindow({
内容:“.toString()
});
这是你的答案

var infowindow = new google.maps.InfoWindow({
    content: <>"<?= nl2br($store["Stores"]["address"]) ?>"</>.toString()
});
var infowindow=new google.maps.infowindow({
内容:“.toString()
});

这是用户的预期行为。如果要删除字符串中的换行符,必须使用preg_replace

<?= preg_replace("/(\r\n|\n|\r)/", "<br />", $input)

这是的预期行为。如果要删除字符串中的换行符,必须使用preg_replace

<?= preg_replace("/(\r\n|\n|\r)/", "<br />", $input)

这可能是因为回车符(
\r
)与
\n
不同,可能在JavaScript中被解释为换行符。。。不过,这种情况很奇怪,直接将文本插入javascript是危险的。至少,您还可以通过
json\u encode()
,这保证生成有效的javascript。这可能是因为回车符(
\r
)与
\n
不同,可能被解释为javascript中的换行符。。。不过,这种情况很奇怪,直接将文本插入javascript是危险的。至少,您还可以通过
json\u encode()
传递内容,这保证生成有效的javascript。