我一直在这里搜索帖子,虽然我发现它有用,但我无法找到所有问题。或多或少我正在编写一个带有后端的网站,允许用户(我)发布故事然后保存到MySQL DB(UTF-8)供以后使用。然后我在前端有一个显示所述故事的页面,试图重新使用P标签和BR标签,使格式看起来不错。
在保存故事内容后,我使用了" escape"用于将用户可能输入的所有HTML标记转换为字符串的一部分而不是代码的函数。我已经找到了一种方法,无论多么草率,用以下函数恢复
标签:
function set_pars($string) {
return "<p>" . str_replace("\r\n", "</p><p>", $string) . "</p>";
}
看到字符串的开头没有\ n,最后没有\ r \ n(如果我甚至正确理解这两个字符)我被迫在开头和结尾添加它们。我还没有找到一种方法来在BR中添加返回的空白行。当我将P标签设置为&#34;高度:20px;&#34;我认为我在短时间内表现得非常出色。直到我有一段超过一行的段落......我相信有人可能会从那一段开始大笑。
我选择在事后做样式而不是直接将它们添加到数据库中的原因是因此我不必在处理故事时看到丑陋的标签模型(尽管如此我正在写这篇文章,我发现我可以删除它们,然后将检索到的故事填入TEXTAREA领域。虽然看起来像是不必要的来回。)什么能帮助我理解并使这项工作成功!感谢您提前获取有关此主题的任何信息。
如果我的ramblings已经超出了我想要做到的这一点:
你好我是第一行。
您好,我是第二行。
看起来像这样:
<p>Hello I am the first line.</p>
<br />
<p>Hello I am the second line.</p>
这是我最终使用的最终功能,它完美无缺:
function set_pars($string) {
$string = str_replace(array("\n\r","\n","\r"), array("<br />","<p>","</p>"), $string);
return "<p>" . $string . "</p>";
}
答案 0 :(得分:1)
首先用\r\n\r\n
替换</p><br /><p>
,然后在结果字符串上,按照您现在的方式进行\r\n
替换。
当您按两次输入以在两者之间创建一个空行时,只需重复\r\n
两次。
Hello I am the first line.
Hello I am the second line.
以上结果为Hello I am the first line.\r\n\r\nHello I am the second line.
。