我从 db 调用了我的 textarea 数据,这些数据预计将在新行中显示而没有<br />
沿,我如何将<br />
textarea 中的并显示到新行中?
我的数据库列也hello<br />world
完全存储。
谢谢。
我从 db 调用了我的 textarea 数据,这些数据预计将在新行中显示而没有<br />
沿,我如何将<br />
textarea 中的并显示到新行中?
我的数据库列也hello<br />world
完全存储。
谢谢。
您应该首先不要将 HTML 存储在数据库中。
将文本存储在数据库中,将换行符保留为"\n"
.
在页面上呈现后,使用nl2br(htmlspecialchars($str, ENT_QUOTES, 'UTF-8'))
.
采用:
$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
确保\n
str_replace 中的参数在双引号之间。它不会在单引号之间工作。
关于什么
str_replace('<br />', PHP_EOL, 'hello<br />world')
如果只是换行,可以使用str_ireplace
$text = str_ireplace("<br />", "\n", $text);
$text = str_ireplace("<br>", "\n", $text);
我喜欢做的是在这样的数组中定义多行字符串:
$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.
您可以使用urlencode
and urldecode
which 我用于类似的事情,例如:
将数据存储在数据库中,如下所示:
$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 name="content"><?php echo "$show"?></textarea>
我在 HTML5 中这样做的方式是在第 1 行和第 2 行之间放置大量空格。
这是一个有点肮脏的黑客,但它的工作原理。
<textarea rows="8" placeholder="Line 1
Line 2
Line 3"></textarea>
在数据库中存储这么多空格可能并不理想,但我不明白为什么它不起作用。