Replace carriage return in an email

早过忘川 提交于 2019-12-24 17:23:59

问题


I'm trying to replace carriage returns with a line break in PHP so that my site moderators don't have to type
every time they want to add a new line when typing an email from my site. I've tried several different methods to replace the line breaks but none have worked. The methods that I have tried are:

preg_replace('/\r\n?/', "<br />", $str);
eregi_replace(char(13), "<br />", $str);
str_replace("\r\n", "<br />", $str);
str_replace("\n", "<br />", $str);

and the nl2br function.

I've looked for the answer on Google for about half an hour and haven't found anything. Can anyone help?


回答1:


Quite good example from php.net documentation

// Order of replacement
$str     = "Line 1\nLine 2\rLine 3\r\nLine 4\n";
$order   = array("\r\n", "\n", "\r");
$replace = '<br />';

// Processes \r\n's first so they aren't converted twice.
$newstr = str_replace($order, $replace, $str);



回答2:


Your regular expression is escaping your r and n.

Instead of

preg_replace('/\r\n?/', "<br />", $str);

Try this:

preg_replace('/\\r\\n/', "<br />", $str);



回答3:


Did you test it like this?

$str = str_replace( "\r\n", "<br />", $str );
$str = str_replace( "\r", "<br />", $str );
$str = str_replace( "\n", "<br />", $str );

This should work pretty much always. And remember always use "\r" instead of '\r'.



来源:https://stackoverflow.com/questions/11723424/replace-carriage-return-in-an-email

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!