当我使用函数nl2br($ text)时,它不会显示我想要的中断,而是显示中断所在的\ r \ n。我显示一个用户的确认页面,显示他们在表单中输入的详细信息。
(the confirmation code in php)
// Confirm success with the user
echo '<p>You have successfully posted a ad.';
echo 'Here is your posting: <br /><br />';
echo 'Title: ' .$title. '<br />' ;
echo 'Price $: ' .$price.'<br />' ;
echo 'Location: ' .$city. ' ' .$state. '<br />' ;
echo '<b>Detail: </b>' .nl2br($detail). '<br />';
(The form users fill out)
<div class="fieldwrapper">
<label for="detail" class="styled">Detail:</label>
<div class="thefield">
<textarea id="detail" name="detail"><?php if (!empty($detail)) echo $detail; ?></textarea>
(The output)
This is a test\r\n\r\ntesting is good\r\n\r\nWhy doesn\'t it work?
答案 0 :(得分:2)
$input = 'this \r\nis what\r\ni want\r\n\r\n\r\nd';
echo nl2br(str_replace('\r', '', $input);
首先删除\ r \ n,这应该会有所帮助。
答案 1 :(得分:0)
因为\ r \ n不是newline character in the *nix sense(又名“line feed”字符) - 它是“carriage return”字符。
有historical reasons why both exist,但是现在我们的程序员必须处理这个问题真的很麻烦。
正如JonnyLitt所说 - 你必须在使用nl2br()
之前自己删除\ r \ n字符。
答案 2 :(得分:0)
\r
在您的文字中已经。 不是回车符号,而是字面意思的2符号序列 - 由r
字母吹过的反斜杠。
您必须在代码中找到一个将换行符转换为\r
序列的位置。 mysql_real_escape_string()之后的addslashes可以做的事情
更新:
你的评论后,我明白了。
您使用单引号来分隔字符串。
READ PHP语法,不用担心。真实数据没问题。