2012-02-23 61 views
1

我从从数据库中提取的数据中删除“\ n”有一些奇怪的困难。str_replace/nl2br没有按预期的那样动作

该数据是一封电子邮件,并由输入它的系统通过\ n's存储。

当我展示它,我试过用删除这些\ n的以下内容:

$htmlbody = str_replace("\n", "", $message['htmlbody']); 

nl2br($message['htmlbody']); 

但是这两个命令仍然会返回一个字符串,它是完全\ n的。

变量$ message ['htmlbody']包含一个字符串,如\n\n <div>\n Example Data \n </div>\n,并且这些数据在通过str_replace传递后保持不变。

数据最初来自JSON webhook,它已经用\ n的HTML电子邮件替换了所有换行符。我也可以控制要放入数据库的数据,并尝试对原始数据使用上述操作获得相同的结果。

有什么想法可能会导致这种情况?

干杯。

+6

你确实分配了'str_replace'的结果,不是吗? – knittl 2012-02-23 15:23:33

+0

是的。 '$ htmlbody = str_replace(“\ n”,“”,$ message ['htmlbody']);'被使用,然后此刻我使用'echo $ htmlbody'来测试它...一个示例字符串正在输出为'\ n \ n

\n bjhbkhbkbhkuubuhbhjbh\n
\ n' – 2012-02-23 15:35:25

+0

你意识到你错过了'nl2br'示例中的右括号? (尽管我认为这是一个错字*,而不是你的问题)。 – 2012-02-23 15:41:31

回答

0
$message['htmlbody'] = str_replace("\n", "", $message['htmlbody']); 

如果试图修改字符串都\n显示,而不是解释为一个新行,使用:

$message['htmlbody'] = str_replace("\\n", "", $message['htmlbody']); 
+0

谢谢,但这正是我目前所拥有的。我尝试了它的地狱,仍然有同样的问题。输出仍然包括\ n \ n

\n bjhbkhbkbhkuubuhbhjbh\n
\ n' – 2012-02-23 15:36:18

+0

你可以编辑你的文章并复制一些你的代码请 – 2012-02-23 15:37:29

+0

我已经编辑了我的答案,看看它 – 2012-02-23 15:48:58

1

在谷歌搜索

$message = preg_replace("/\n|\r/", " ", $message['htmlbody']); 

发现这个它将用空格替换换行符。

+1

您的解决方案将用两个空格替换“\ r \ n”字符(窗口回车换行符)... – silly 2012-02-23 15:41:05

+0

如果我读错了,请更正我的错误,但应该用一个空格替换换行符或回车符。该空间是微不足道的,但可能对大多数情况有用。编辑:我明白你在说什么。嗯。 – buck54321 2012-02-23 15:47:39

+0

看我的答案,我认为更好地替换第一个\ r \ n和其余的! – silly 2012-02-23 15:57:12

0

尝试通过$messagestripslashes。这可能是你有\\ñ\\ R,即双斜杠它防止正确逃逸......

$message['htmlbody'] = nl2br(stripslashes($message['htmlbody'])) 
1

,以取代第一\ r \ n然后\ r和然后\ n使用此:

$message['htmlbody'] = preg_replace(array("/\r\n/", "/\r/", "/\n/"), array(' ',' ', ' '), $message['htmlbody']); 
相关问题