PHP突破新的界限

时间:2013-05-22 07:25:19

标签: php

我有从db调用的textarea数据,这些数据预计会显示在没有<br />的新行中,如何打破<br />并在textarea中显示为新行?

我的数据库列也完全存储为hello<br />world

enter image description here

感谢。

7 个答案:

答案 0 :(得分:3)

您应该做的是 NOT 首先在您的数据库中存储HTML。

  1. 将文字存储在数据库中,将换行符保持为"\n"

  2. 在页面上呈现后,使用nl2br(htmlspecialchars($str, ENT_QUOTES, 'UTF-8'))

答案 1 :(得分:1)

使用:

$text = 'This is some text<br />With a line break in it';

$text = str_replace('<br />', "\n", $text);

// Outputs: 
   This is some text
   with a line break in it

确保str_replace中的\n参数介于双引号之间。它不会在单引号之间起作用。

答案 2 :(得分:0)

怎么样

str_replace('<br />', PHP_EOL, 'hello<br />world')

答案 3 :(得分:-1)

如果仅适用于新行,则可以使用str_ireplace

$text = str_ireplace("<br />", "\n", $text);
$text = str_ireplace("<br>", "\n", $text);

答案 4 :(得分:-1)

我喜欢做的是在数组中定义多行字符串:

$output = array();
$output[] = 'Hello<br />';
$output[] = 'World.<br />';
$output[] = '<br />';
$output[] = 'This is a test.';

echo implode("\r\n", $output);

这将返回HTML代码:

Hello<br />
World.<br />
<br />
This is a test.

答案 5 :(得分:-1)

您可以使用我用于类似内容的urlencodeurldecode,例如:

将数据存储在数据库中,如下所示:

$html       = urlencode($_POST['content']);

使用这样的普通查询:

INSERT INTO table (Content) VALUES ('".$html."')

然后使用以下内容将其从数据库中删除:

$strSQL1    ="SELECT Content FROM table;
$objQuery1  = mysql_query($strSQL1);
$objResult1     = mysql_fetch_array($objQuery1); 

$show       = urldecode($objResult1["Content"]); 

然后使用以下内容填充textarea:

<textarea name="content"><?php echo "$show"?></textarea>

答案 6 :(得分:-2)

我在HTML5中这样做的方法是在第1行和第2行之间放置很多空格。

这是一个肮脏的黑客,但它的确有效。

<textarea rows="8" placeholder="Line 1                                     
                                                                        Line 2
                                                                        Line 3"></textarea>

在您的数据库中存储这么多空格可能并不理想,但我不明白为什么它不起作用。