替换电子邮件中的回车

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('/
?/', "<br />", $str);
eregi_replace(char(13), "<br />", $str);
str_replace("
", "<br />", $str);
str_replace("
", "<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?

Did you test it like this?

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

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

Your regular expression is escaping your r and n.

Instead of

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

Try this:

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

Quite good example from php.net documentation

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

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