从MySQL检索HTML并显示在文本区


Retrieve HTML from MySQL and display in textarea

我想做的是将HTML代码存储在MySQL表中,并在文本区中显示原始代码。不幸的是,存储的HTML弄乱了页面HTML。我之所以没有使用strip_tags和htmlentities这样的方法,是因为我需要打印实际的标签和符号。所讨论的数据包含bb代码,可能如下所示:

[pre]
<!--HTML CODE GOES HERE-->
[/pre]

我有一个类,方便地将bb标签转换为实际的html代码,当直接在页面上显示时,它的工作效果惊人。一旦将[pre]标签转换为<pre>标签,显示代码就不是问题了。当在input/textarea元素中显示这些数据时,就会出现这样的问题:

<textarea>
[pre]
<form></form>
[/pre]
</textarea>

如果我尝试使用htmlentities,我所有的标签将是html代码,使编辑更困难,更不直观的用户。我想结果应该是这样的:

<textarea>
&#91;pre&#93;
...
&#91;&#47;pre&#93;
</textarea>

给定这个算法:

  1. 从用户

  2. 获取数据
  3. 使用PDO方式存储在MySQL中

  4. 检索数据显示在任何地方

  5. 以某种方式处理此输出,使结果看起来像这样:

    & lt;textarea>(前)& lt;形式> & lt;/>形式[/pre]& lt;/textarea>

有可能吗?

更新:

使用内容可编辑的div正是我所需要的!关于这个解决方案,我唯一的问题是如何保留换行符?当数据第一次创建时,用户在一个文本区中输入,该文本区在提交时保留数据库中的换行符。使用可编辑的div输出这些内容似乎可以删除它们,这对用户来说也不是那么直观。谢谢!

$htmlcontent = preg_replace('/&#91;pre&#93;/i', '[pre];', $htmlcontent);
$htmlcontent = preg_replace('/&#91;&#47;pre&#93;/i', '[/pre];', $htmlcontent);

所以令人沮丧的是,它不会在评论中断行:/(我需要学习如何lol,我是新的stackoverflow)

为什么不使用htmlentities + regex将所有&#91;pre&#93;&#91;&#47;pre&#93;替换回它们的原始形式?