检测表单中的段落

时间:2013-08-30 13:33:19

标签: php

如何检测表单中有不同的段落?在此示例中,如果用户写入不同的段落,则echo将所有的toguether放入。我尝试过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;
?>

2 个答案:

答案 0 :(得分: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>,但是你可以看到它的去向。

答案 1 :(得分:1)

您可以使用爆炸功能(php manual page):

$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