str_replace / nl2br没有按预期运行

时间:2012-02-23 15:22:08

标签: php

从数据库中提取的数据中删除“\ n”时遇到了一些奇怪的困难。

数据是一封电子邮件,并由输入它的系统存储在整个电子邮件中。

当我显示它时,我试图使用以下内容删除这些\ 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电子邮件中的所有换行符。我也可以控制放入数据库的数据,并尝试对原始数据使用上述操作,结果相同。

对可能导致这种情况的任何想法?

干杯。

4 个答案:

答案 0 :(得分:1)

在Google搜索中找到了这个

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

将使用空格替换换行符。

答案 1 :(得分:1)

首先替换\ r \ n然后\ r \ n然后\ n使用它:

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

答案 2 :(得分:0)

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

如果您尝试修改的字符串显示\n ,并且未被解释为新行,请使用:

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

答案 3 :(得分:0)

尝试将$message传递给stripslashes。有可能你有\\ n \\ r,这是阻止正确转义的双斜线...

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