Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
以SQL段落和空行为例(PHP、CSS、$MySQL)_Php_Html_Mysql_Css_Str Replace - Fatal编程技术网

以SQL段落和空行为例(PHP、CSS、$MySQL)

以SQL段落和空行为例(PHP、CSS、$MySQL),php,html,mysql,css,str-replace,Php,Html,Mysql,Css,Str Replace,我在这里浏览了一段时间,虽然我发现其中有很多有用的东西,但我无法找到我所有的问题。或多或少,我正在为一个网站编写一个后端,允许用户(我)发布故事,然后保存到MySQL数据库(UTF-8)供以后使用。然后,我在前端有一个页面,其中显示了所说的故事,并尝试将P标记和BR标记带回来,以使格式看起来更美观 在保存故事内容时,我使用了一个“escape”函数将用户可能输入的所有HTML标记转换为字符串的一部分,而不是代码。我已经找到了一种方法,不管它有多草率,都可以通过以下功能带回标记: function

我在这里浏览了一段时间,虽然我发现其中有很多有用的东西,但我无法找到我所有的问题。或多或少,我正在为一个网站编写一个后端,允许用户(我)发布故事,然后保存到MySQL数据库(UTF-8)供以后使用。然后,我在前端有一个页面,其中显示了所说的故事,并尝试将P标记和BR标记带回来,以使格式看起来更美观

在保存故事内容时,我使用了一个“escape”函数将用户可能输入的所有HTML标记转换为字符串的一部分,而不是代码。我已经找到了一种方法,不管它有多草率,都可以通过以下功能带回标记:

function set_pars($string) {
   return "<p>" . str_replace("\r\n", "</p><p>", $string) . "</p>";
}
函数集\u pars($string){
返回“”;
}
由于字符串开头没有\n,结尾没有\r(如果我能正确理解这两个字符的话),我不得不在开头和结尾添加它们。我还没有找到为返回的空行添加BR的方法。当我把P标签设置为“height:20px”时,我觉得自己很聪明,直到我有一段超过一行的文字。。。我相信有人会从中得到很好的笑声

我之所以选择事后做样式设计,而不是直接将它们添加到DB中,是为了在处理故事时不必看到丑陋的标签模型(虽然在我写这篇文章的过程中,我突然想到,在将检索到的故事填充到文本区域之前,我可以删除它们。不过,似乎没有必要来回重复。)有什么能帮助我理解并使这篇文章成功!提前感谢您提供任何关于这个主题的信息

如果我的漫谈已经超出了我想说的要点:

你好,我是第一行

你好,我是第二行

像这样:

<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>";
函数集\u pars($string){
$string=str_replace(数组(“\n\r”、“\n”、“\r”)、数组(“
”、“”、“

”)、$string); 返回“”$string.

”;

}

首先用

替换
\r\n\r\n
,然后在生成的字符串上,按照现在的方式执行
\r\n
替换

当您按两次enter键在两者之间创建一个空行时,只会重复两次
\r\n

Hello I am the first line.

Hello I am the second line.

上面的结果是,
你好,我是第一行。\r\n\r\nHello,我是第二行。

我不明白为什么您要使用

来分隔已包含在
标记中的内容。如果您只需要在段落之间留出更多空间,只需在
p
标记中添加
边距即可,您可以执行
str\u替换(“\r\n\r\n”、“”、$string)替换两行之间的空行。只要输入两次就行了新的行字符。我确实尝试了边距,但是空p没有空间,因此忽略了这些行。让我给您的其他建议试试,谢谢。对不起,您应该用<代码> < /P> < BR/> < P> < /代码>代替<代码> > \\r\n\r\n>代码>而不是仅< c >。ode>
。我贴了一个带解释的答案。就是这样!我明白了,太棒了!非常感谢你。另一种方法是允许多行中断,将所有
\r
替换为

,将
\n
替换为
,然后将所有
替换为

e> 。如果有人想要相同的功能,
函数集\u pars($string){$string=str\u replace(数组(“\n\r”、“\r”、“\n”)、数组(“
”、“p>”、“”)、$string);返回“”$string。”