2012-01-06 50 views
1

我正在使用以下代码将文本框的内容发布到HTML文件。当提交信息时,我希望在那里插入<br/>。我想用这个代码将解决这个问题:PHP nl2br发布重复<br/>的?

$content = nl2br($_POST['content']);

但它似乎产生,如果已经有到位<br />如下:

Lorum存有。 <br /><br />

我该如何解决这个问题?

侦错码:

<?php 
$fn = "people.html"; 
if (isset($_POST['content'])) 
{ 
    $content = stripslashes('content'); 
    $content = nl2br($_POST['content']); 
    $fp = fopen($fn,"w") or die ("Error opening file in write mode!"); 
    fputs($fp,$content); 
    fclose($fp) or die ("Error closing file!"); 
} 
?> 

它是如何被提交:约换行符你

<form action="<?php echo $_SERVER["PHP_SELF"] ?>" method="post"> 
    <textarea rows="25" cols="40" name="content"><?php readfile($fn); ?></textarea> 
    <input type="submit" value="Sauver"> 
</form> 
+0

$ _POST数据是什么样的? – Fleep 2012-01-06 01:30:39

+1

从你的意思,内容是'Lorem ipsum。
\ n'?那么这是一个完美的预期结果。 – deceze 2012-01-06 01:31:36

+0

它看起来像我在我的文章中提到的引用,'Lorum ipsum。

' – Charlie 2012-01-06 01:31:53

回答

2
//$content = stripslashes('content'); 
$content = preg_replace('~\s*<br ?/?>\s*~',"<br />",$_POST['content']); 
$content = nl2br($content); 

类似的东西应该剥离多余的空白。

另外,你为什么使用stripslashes?如果你有魔术引号,这应该是必要的,你不应该有魔术引号。无论如何,你也得到了这条线的语法错误。

编辑:仍试图解释你在说什么。我想这可能会有所帮助:

<form action="<?php echo $_SERVER["PHP_SELF"] ?>" method="post"> 
    <textarea rows="25" cols="40" name="content"><?htmlentities(preg_replace('~\s*<br ?/?>\s*~i',"\n",(file_get_content($fn))); ?></textarea> 
    <input type="submit" value="Sauver"> 
</form>' 

将从正确的数据开始。也许。

+0

我遇到了和以前一样的问题。如果我提交以下文字,'第一行。 ** LINEBREAK **第二行.',它发布以下代码:'第一行。
第二行.'。页面提交代码后,它将通过'