如何检测表单中有不同的段落?在此示例中,如果用户写入不同的段落,则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;
?>
答案 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