5

データベースからの戻り文字列があります。

戻り文字列は 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>
4

8 に答える 8

26

これを試してください (2014-11-08 更新):

<?php

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

?>
<script type="text/javascript">
  var jdb = <?php echo json_encode($db) ?>;
</script>
于 2012-04-18T12:35:17.813 に答える
9
$db = preg_replace("/\n/m", '\n', $db);

トリックを行う必要があります

于 2012-04-18T12:34:03.830 に答える
5

\rおよび\n改行を適切に保持するには、 strtrを簡単に使用できます。

$db = strtr( $db, array(  "\n" => "\\n",  "\r" => "\\r"  ));
于 2014-02-18T21:21:36.633 に答える
2

要点はわかりませんが、できます(バックスラッシュを追加して改行をエスケープします)

$db = str_replace("\n","\\n",$db);
于 2012-04-18T12:36:06.997 に答える
1
$db = str_replace("\r\n", "\\n", $db);
于 2012-04-18T12:36:10.633 に答える
0

\n は改行なので、正しく理解できているかわかりません!?

しかし、あなたが必要かもしれません:

$db = str_replace("\r\n", "\n", $db);
于 2012-04-18T12:34:56.450 に答える
0

それをjavascriptに出力したい...うーん、それをhtmlに挿入したい場合は、おそらく次のようなものが必要です(テストが実行されました):

<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 456jsを介してdivに出力する

js でそのままにしたい場合は、2 つのスラッシュを削除して、php では "\n"、js では "\n" にします。

于 2012-04-18T12:46:44.793 に答える
-3

すべての新しい行をHTMLに変換するnl2br()を確認する必要があります<br/>。 http://php.net/manual/en/function.nl2br.php

于 2012-04-19T06:24:07.420 に答える