Reputation: 2615
I am trying to simply replace some new lines and have tried three different ways, but I don't get any change:
$description = preg_replace('/\r?\n|\r/', '<br/>', $description);
$description = str_replace(array("\r\n", "\r", "\n"), "<br/>", $description);
$description = nl2br($description);
These should all work, but I still get the newlines. They are double: "\r\r". That shouldn't make any of these fail, right?
Upvotes: 96
Views: 244901
Reputation: 155
I think str_replace(array("\\r\\n", "\\r", "\\n"), " ", $string);
will work.
Upvotes: 1
Reputation: 22167
Try this:
echo str_replace(array('\r\n', '\n\r', '\n', '\r'), '<br>', $description);
Upvotes: 10
Reputation: 4005
nl2br() worked for me, but I needed to wrap the variable with double quotes:
This works:
$description = nl2br("$description");
This doesn't work:
$description = nl2br($description);
Upvotes: 6
Reputation: 31
This will work for sure:
str_replace("\\r", "<br />", $description);
str_replace("\\n", "<br />", $description);
Upvotes: 3
Reputation: 4984
Try using this:
$description = preg_replace("/\r\n|\r|\n/", '<br/>', $description);
Upvotes: 75
Reputation: 138
If you are using nl2br
, all occurrences of \n
and \r
will be replaced by <br>
. But if (I don’t know how it is) you still get new lines you can use
str_replace("\r","",$description);
str_replace("\n","",$description);
to replace unnecessary new lines by an empty string.
Upvotes: -3
Reputation: 6127
There is already the nl2br()
function that inserts <br>
tags before new line characters:
Example (codepad):
<?php
// Won't work
$desc = 'Line one\nline two';
// Should work
$desc2 = "Line one\nline two";
echo nl2br($desc);
echo '<br/>';
echo nl2br($desc2);
?>
But if it is still not working make sure the text $desciption
is double-quoted.
That's because single quotes do not 'expand' escape sequences such as \n
comparing to double quoted strings. Quote from PHP documentation:
Note: Unlike the double-quoted and heredoc syntaxes, variables and escape sequences for special characters will not be expanded when they occur in single quoted strings.
Upvotes: 154
Reputation: 30496
You may have real characters "\" in the string (the single quote strings, as said @Robik).
If you are quite sure the '\r' or '\n' strings should be replaced as well, I'm not talking of special characters here but a sequence of two chars '\' and 'r', then escape the '\' in the replace string and it will work:
str_replace(array("\r\n","\r","\n","\\r","\\n","\\r\\n"),"<br/>",$description);
Upvotes: 19
Reputation: 309
nl2br()
as you have it should work fine:
$description = nl2br($description);
It's more likely that the unclosed '
on the first line of your example code is causing your issue. Remove the ' after $description...
...$description');
Upvotes: 6