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 (
'<' => '<',
'&' => '&',
'"' => '\\"',
'\\' => '\\\\',
"\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>
_;