4

如何检测表单中有不同的段落?在此示例中,如果用户编写不同的段落,则回显将所有内容放在一起。我尝试了 white-space:pre 但它不起作用。我不知道我还能做些什么来回显文本<p>

CSS:

#text {  
    white-space:pre;
}

HTML:

<form action='normal-html.php' method='post'> 
<textarea id="text" name='text' rows='15' cols='60'></textarea> <br/> 
<input type='submit' value='Convertir a html' /> 
</form> 

<br />

<?php
$text = $_POST[text];
echo $text;
?>
4

2 回答 2

5

这听起来像是http://php.net/manual/en/function.nl2br.php的工作

string nl2br ( string $string [, bool $is_xhtml = true ] )

Returns string with '<br />' or '<br>' inserted before all 
newlines (\r\n, \n\r, \n and \r). 

您可以在回显数据时使用它,这样您就永远不会更改数据库中的内容 - 或者您可以在将用户输入保存到数据库时简单地更改用户输入。我个人是第一种选择的粉丝,但无论哪种方式最适合您的应用程序。

编辑:如果您只想使用<p>标签,您也可以使用str_replace执行此操作:

$text = '<p>';
$text.= str_replace('\n', '</p><p>', $_POST[text]);

通常\n是一个新行,取决于它的读取方式,您可能需要使用\r\n字符串替换来完成剩下的工作。这将在字符串的末尾留下一个备用<p>,但你会看到这是怎么回事。

于 2013-08-30T13:35:23.540 回答
1

您可以使用explode功能(php手册页):

$your_array = explode("\n", $your_string_from_db);

例子:

$str = "Lorem Ipsum\nAlle jacta est2\nblblbalbalbal";
$arr = explode("\n", $str);

foreach ( $arr as $item){
   echo "<p>".$item."</p>";
}

输出:

 Lorem Ipsum
 Alle jacta est 
 blblbalbalbal
于 2013-08-30T13:37:47.913 回答