从MySQL检索HTML并在textarea中显示

时间:2015-09-12 21:45:04

标签: php html mysql

我想要做的是获取存储在MySQL表中的HTML代码,并在textarea中显示原始代码。不幸的是,存储的HTML会弄乱页面HTML。我没有采用像strip_tags和htmlentities这样的方法的原因是因为我需要打印实际的标签和符号。有问题的数据包含bb代码,可能如下所示:

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

我有一个类可以方便地将bb标签转换为实际的html代码,这些代码直接在页面上显示时非常有效。将[pre]代码转换为<pre>代码后,显示代码不是问题。在输入/ textarea元素中显示此数据时会出现此问题,如下所示:

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

如果我尝试使用htmlentities,我的所有标签都将是html代码,使用户更难以编辑。我想结果会是这样的:

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

鉴于此算法:

  1. 从用户那里获取数据

  2. 使用预准备语句(PDO方法)

  3. 在MySQL中存储
  4. 检索要显示的数据

  5. 以某种方式清理此输出,以便结果如下所示:

    &LT; textarea&gt; [预] &LT;形式&gt;&lt; / form&gt; [/预] &LT; / textarea&gt;

  6. 有可能吗?

    更新:

    使用内容可编辑的div正是我需要的!我对此解决方案的唯一问题是如何保留换行符?首次创建数据时,用户键入textarea,在提交时,保留数据库中的换行符。使用可编辑的div输出它似乎会删除它们,这对用户来说再次不那么直观。谢谢!

2 个答案:

答案 0 :(得分:1)

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

如此令人沮丧,它不会在评论中打破行:/(我需要学习lol,我是stackoverflow的新手)

答案 1 :(得分:0)

为什么不使用htmlentities +正则表达式将所有&#91;pre&#93;&#91;&#47;pre&#93;替换回原始格式?

相关问题