2012-01-06 29 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 **第二行.',它發佈以下代碼:'第一行。
第二行.'。頁面提交代碼後,它將通過'