我想要做的是获取存储在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>
[pre]
...
[/pre]
</textarea>
鉴于此算法:
从用户那里获取数据
使用预准备语句(PDO方法)
检索要显示的数据
以某种方式清理此输出,以便结果如下所示:
&LT; textarea&gt; [预] &LT;形式&gt;&lt; / form&gt; [/预] &LT; / textarea&gt;
有可能吗?
更新:
使用内容可编辑的div正是我需要的!我对此解决方案的唯一问题是如何保留换行符?首次创建数据时,用户键入textarea,在提交时,保留数据库中的换行符。使用可编辑的div输出它似乎会删除它们,这对用户来说再次不那么直观。谢谢!
答案 0 :(得分:1)
$htmlcontent = preg_replace('/[pre]/i', '[pre];', $htmlcontent);
$htmlcontent = preg_replace('/[/pre]/i', '[/pre];', $htmlcontent);
如此令人沮丧,它不会在评论中打破行:/(我需要学习lol,我是stackoverflow的新手)
答案 1 :(得分:0)
为什么不使用htmlentities +正则表达式将所有[pre]
和[/pre]
替换回原始格式?