Javascript Textarea不';t从DB渲染换行符

Javascript Textarea不';t从DB渲染换行符,javascript,php,html,mysql,Javascript,Php,Html,Mysql,我在一个网页上有两个元素。当用户在第一个中提交文本时,文本将插入到数据库中。然后使用Javascript从数据库中检索文本并存储在第二个中 如果数据库中的字符包含换行符,则第二个文本区域不会呈现文本 如果我键入一个没有换行符的单词,一切都很好: 但是下面的方法不起作用 的var\u转储($output) n e w l i n e 是 string(19) "n e w l i n e" 我的代码: HTML <form ac

我在一个网页上有两个
元素。当用户在第一个
中提交文本时,文本将插入到数据库中。然后使用Javascript从数据库中检索文本并存储在第二个

如果数据库中的字符包含换行符,则第二个文本区域不会呈现文本

如果我键入一个没有换行符的单词,一切都很好:

但是下面的方法不起作用

var\u转储($output)

    n
    e
    w
    l
    i
    n
    e

string(19) "n e w l i n e"
我的代码:

HTML

<form action="" method="get">
  <textarea name="input" rows="5"></textarea> <br>
  <input type="submit" name="go"><br>
  <textarea name="output" id="id_ouput" rows="5"></textarea>
</form>



PHP

<?php
...
...
$input=$_GET['input'];

$insert = $koneksi->query("insert into data values ('".$input."')");
$select = $koneksi->query("SELECT * FROM data"); // data is column
foreach ($select as $tampung){
    $output = $tampung['text'];
}

// use JS to access <textarea>' value attribute
?>
     <script>
         document.getElementById('id_ouput').value= "<?php echo $output ?>";
     </script>
<?php

...

?>

问题在于PHP代码输出的JavaScript字符串文本格式不正确

根据,双引号字符串文字可以包含任何源字符,但双引号(
)、反斜杠(
\
)和行终止符字符除外,其中行终止符是

  • \u000A
    (换行)
  • \u000D
    (回车)
  • \u2028
    (行分隔符)
  • \u2029
    (段落分隔符)

您需要将这些字符转换为合适的JavaScript转义序列,并且还必须转换
尝试将文本框括在
..
标记中实际字符串是什么?尝试执行
回送htmlentities($output)
@SaumilSoni,它也不起作用。@twentylemon
也不起作用。它不只是为了工作,它是为了调试。什么是
$output
,raw?老兄,你是天才!!!,这里以前的大多数读者都没有意识到,他们认为它会很好地工作。@febri23:我很高兴它能为你工作。它是loo有四个人在不理解主题的情况下对你的帖子进行了投票,尽管我认为你的问题应该澄清一下。
<?php

  $conversion = array (
    '<'            => '&lt;',
    '&'            => '&amp;',
    '"'            => '\\"',
    '\\'           => '\\\\',
    "\r"           => '\\r',
    "\n"           => '\\n',
    "\xe2\x80\xa8" => '\\u2028',
    "\xe2\x80\xa9" => '\\u2029',
  );

  $output = $tampung['text'];
  $value = strtr ($output, $conversion);

  echo <<<_
<script>
     document.getElementById('id_ouput').value="$value";
</script>
_;
<?php

  $output = $tampung['text'];
  $value = htmlspecialchars ($output);

  echo <<<_
    <textarea name="output" id="id_ouput" rows="5">$value</textarea>

_;