2011-02-28 160 views
0

我有一种表单,我在其中输入了一个换行符,当我输入换行符时它看起来正确,但是现在从数据库中取出数据而不是空白时, \ n \ r字符串出现。摆脱 r n字符串

我尝试这样做:

$hike_description = nl2br($hike_description); 

但它不工作。有谁知道这可以解决吗?我正在使用PHP。 这里是发生这种情况的页面。看到页面的描述部分: http://www.comehike.com/hikes/scheduled_hike.php?hike_id=130

谢谢, 亚历克斯

+0

你也有一个流浪'\''显示在页面上。你如何在数据库中保存/加载数据?例如,您不希望同时清理和使用参数化查询。 – mellamokb 2011-02-28 17:59:37

回答

1

这意味着,你有可能明文“\ n \ r'字符串在数据库中。

尝试显示前消毒分贝输出:

$sanitized_text = preg_replace('/\\[rn]/','', $text_from_db); 

(只是猜测)。

附录

当然,作为Col. Shrapnel指出,有一些根本性的错误 与数据库中的内容(或者,它是用这样的方式按照惯例,你不知道)。

现在,你有固定症状部分 但它会好得多寻找数据库中的是所有这些转义字符 的原因。

问候

RBO

+0

为什么要使用资源丰富的preg_replace ?!str_replace()甚至可以这样做:'$ sanitized_text = str_replace(array('\ r \ n','\ n \ r'),'',$ text_from_db);' – 2011-02-28 18:07:34

+1

@Shehi:在这种情况下,假设str_replace()比preg_replace()更有效,你可能是正确的。但阵列临时不(对我来说)看起来非常有效;-) – 2011-02-28 18:18:19

+0

@shehi的例子工作 - 谢谢! – Genadinik 2011-02-28 18:26:50

0

您可以使用str_replace来清理输入。

$hike_description = nl2br(str_replace("\r\n", "\n", $hike_description)); 
+0

“\ r \ n”(它是两个控制字符序列:0x0D和0x0A)不会显示在网页上。 – 2011-02-28 17:56:14

0
$hike_description = str_replace(array('\n','\r'),'',$hike_description); 

您可能希望在以及在PHP中单引号和双引号之间的区别读了起来:http://php.net/manual/en/language.types.string.php

+0

谢谢,但为什么不工作? $ hike_description = nl2br($ hike_description); – Genadinik 2011-02-28 18:16:55

2

有谁知道这可怎么固定?

当然。 你的代码做不必要的转义,很可能在向数据库添加文本之前。
因此,不必将其替换回来,而必须找到有害的代码并将其清除。