How to use nl2br() to handle string with '\r\n'?

痞子三分冷 提交于 2019-11-27 06:23:54

问题


I am retrieving a product description value stored in database from admin through textarea upon form submit. When I select the description from database I get $description = $row['description']; and I would like to echo $description on main page like this: echo nl2br($description); but I see "\r\n" characters instead of making new rows. From what I've found here and on the net, your string must be used between double quotes, like this:

echo nl2br("Hello, \r\n This is the description");

Now, the value of $description from database is in fact "Hello, \r\n This is the description" but in my script I have to use it like this:

echo nl2br($description);

Which does not make br's, it is outputing \r\n instead. So, what can I do, I can't use double quotes here, from my experience.


回答1:


You could translate them into their respective escape sequences before passing the string through nl2br(), like this:

$description = nl2br(str_replace('\\r\\n', "\r\n", $description));

But what are the literal escapes doing in your database in the first place?




回答2:


You are storing the literal value of \r\n in your database, not the actual characters they represent.

Verify this in your database. If you see \r\n in the description field, then you're probably escaping the backslash when you're storing the data.




回答3:


It looks like your text contains the individual characters \, r, \, and n, and does not contain actual newline characters. As such, str_replace() should get the job done:

echo str_replace('\r\n', '<br>', $description);



回答4:


The nl2br can take a second (optional) argument for "is_xhtml" which will convert the \r\n into a <br> for you. Just change your line to:

echo nl2br($description, TRUE);


来源:https://stackoverflow.com/questions/5226617/how-to-use-nl2br-to-handle-string-with-r-n

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