如何将换行符转换为\ n

问题描述:

我有一个来自db的返回字符串。如何将换行符转换为 n

返回字符串必须用javascript格式化。

<?php 
    $db = "this is a line 
      this is a new line"; 
?> 

我将如何转换上面:

<?php $db = "this is a line \n this is a new line"; ?> 

的Javascript:

<script> 
    var jdb = <?php echo $db; ?> 
</script> 
+0

另一个问题是您没有正确地将字符串插入到JavaScript中。它应该是'var jdb =“”'; – 2012-04-18 12:39:09

试试这个(更新2014年11月8日):

<?php 

    $db = "this is a line 
      this is a new line 
      "; 

?> 
<script type="text/javascript"> 
    var jdb = <?php echo json_encode($db) ?>; 
</script> 
+0

我的var $ db中没有“\ r \ n” 这只是textarea行 – 2012-04-18 12:50:01

+0

If他们来自'

+1

你让我的生活看起来更轻松:) – Abudayah 2014-03-18 21:53:25

$db = preg_replace("/\n/m", '\n', $db); 

应该做的伎俩

+0

当你不使用'^'或'$'时不需要'/ m',并且你的表达式应该是单引号的;-) – DaveRandom 2012-04-18 12:36:52

+0

谢谢,我不知道使用'm'修饰符:) _如果主题字符串中没有“\ n”字符,或在模式中没有出现^或$,则设置此修饰符不起作用._ – fcalderan 2012-04-18 12:38:25

我不知道如果我理解正确因为\ n是一个换行符!?

但是你可能需要:

$db = str_replace("\r\n", "\n", $db); 
+0

我的var $ db中没有“\ r \ n” 这只是textarea行 – 2012-04-18 12:48:34

+0

是的,而在Windows系统上,您有\ r \ n用于换行符... – Philipp 2012-04-18 12:56:15

我不明白这一点,但你可以(逃避线通过添加一个反斜杠)打破

$db = str_replace("\n","\\n",$db); 

$db = str_replace("\r\n", "\\n", $db); 

你要输出到JavaScript的...嗯,所以如果你想将其插入到HTML,你可能想是这样的(测试RAN):

<div id="test"></div> 
<script type="text/javascript"> 
<?php 
    $string = "123 
    456"; // or $string = "123\n456"; 
    $string = str_replace(array("\r\n","\n"),"\\\\n",$string); 
    echo "document.getElementById('test').innerHTML = '".htmlentities($string)."';"; 
?> 
</script> 

与输出123\n 456到div通过JS

如果单纯想在js中使用它,只需删除两个斜杠即可,这是PHP中的“\ n”和js中的“\ n”。

您应该看看nl2br(),它将所有新行转换为HTML < br />。 http://php.net/manual/en/function.nl2br.php

要妥善保存该\r\n换行符,您可以轻松地使用strtr

$db = strtr($db, array( "\n" => "\\n", "\r" => "\\r" )); 
+0

与\ n使用preg_replace相反,这不会显示警告。干杯 – 2015-07-06 12:55:34