【问题标题】:Retrieve HTML from MySQL and display in textarea从 MySQL 中检索 HTML 并在 textarea 中显示
【发布时间】:2015-12-09 05:32:09
【问题描述】:

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

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

我有一个类可以方便地将 bb 标签转换为实际的 html 代码,当直接在页面上显示时,它的效果非常好。一旦[pre] 标签转换为&lt;pre&gt; 标签,显示代码就不是问题了。在像这样的输入/文本区域元素中显示此数据时会出现问题:

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

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

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

给定这个算法:

  1. 从用户那里获取数据

  2. 使用准备好的语句(PDO 方法)存储在 MySQL 中

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

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

    [预] 表格> [/前]

有可能吗?

更新:

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

【问题讨论】:

标签: php html mysql


【解决方案1】:

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

如此令人沮丧,它不会在 cmets 中换行:/(我需要学习如何大声笑,我是 stackoverflow 的新手)

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 出于某种原因,使用 htmlentities 实际上会删除所有标签/符号。即使没有,我也看不出将它们转换回对应的 html 会有什么帮助。如果你能提供一个详细的例子,那就太好了:)
    猜你喜欢
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    • 2011-12-09
    • 1970-01-01
    • 1970-01-01
    • 2012-02-19
    相关资源
    最近更新 更多