php插入textarea值而不用\ n \ r

时间:2017-11-04 17:03:58

标签: php

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结果是:

enter image description here

2 个答案:

答案 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);

您可以在存储之前或之后进行转换;你总是可以根据需要来回走动。