将textarea
值插入db
后,它会将用户enter
转换为\n\r
,当我想在网站上显示此值时,它也会显示\n\r
在视图中,也在提交中我试图转换这个字符但不起作用。我通过jquery ajax
提交表单。
$safetext = mysqli_real_escape_string($connection, $_POST["describtion"]);
$safetextformat = nl2br($safetext);
结果:
sdfsdf \ r \ nsdf \ r \ nsdf \ r \ nsdf \ r \ nsdf \ r \纳秒\ r \ NDF \ r \ nsdf \ r \ n \ r \ n \ r \ n \ r \ nsdf \ r \ nsdf \ r \ n \ r \ nsdf
还尝试了preg_replace( "/\r|\n/", "", $yourString );
,但仍无效。我怎么能避免这个?
更新:提交和显示的过程如下:
插入/ HTML
<textarea id="describtion" name="describtion" class="form-control"></textarea>
插入/ Jquery的
var data = new FormData();
params = $('#add-form').serializeArray();
$.each(params, function(i, val) {
data.append(val.name, val.value);
});
$.ajax({
type: "POST",
url: ..,
and etc..
});
PHP
$sql = $connection->prepare('INSERT INTO ads (text)
VALUES (?)');
$sql->bind_param("s",$safetext);
$sql->execute();
导致db:
sdfsdf \ r \ nsfsdf \ r \ n \ r \ nsdfsdfsdfsdf sd fs dfsdf \ r \ n \ r \ nsdf \ r \ n \ r \ NDS \ r \ n \ r \ n \ r \ n \ r \ nsdfsdf
现在处于编辑页面:
我直接从db
获取数据array
,并使用for each
和代码显示每个数据:
<textarea id="describtion" name="describtion" class="form-control"><?=nl2br($ed['text']);?></textarea>
<div><?=$s = str_replace("\r\n","<br>",$ed['text'])?></div>
Broswer结果是:
答案 0 :(得分:0)
问题可能更复杂,步骤不同......
您似乎正在放入数据库文字字符串'blalba\r\nblabla'
,这在您的情况下是不正确的。 mysql_real_escape_string()
将其转义为'blalba\\r\\nblabla'
...
解决方案是:
使用正确的double
引号将字符串插入数据库:"blalba\r\nblabla"
PS。在textarea
中,正确的新行字符为"\n"
,而不是<br />
。所以nl2br()
的所有解决方案都是错误的。
PPS。 mysql_real_escape_string()
只应在插入数据库时使用,而不是在从数据库中读取时使用。
答案 1 :(得分:-1)
使用str_replace。例如:
$s = str_replace("\r\n","<br>",$s);
您可以在存储之前或之后进行转换;你总是可以根据需要来回走动。