簡體   English   中英

nl2br()不會輸出換行符,只是'n'

[英]nl2br() won't output line breaks, just 'n'

這很簡單,我的網站上有一個文本區域帖子,如果輸入:

line 1
line 2
line 3

進入它,輸出:

line 1nline 2nline 3

我的插入代碼是:

    $status = strip_tags(stripslashes(htmlentities(mysql_real_escape_string($_POST['status']))));
    $uid = strip_tags(stripslashes(htmlentities(mysql_real_escape_string($_POST['uid']))));

    //more stuff

        $sid = rndTxt(16);
        $status = nl2br($status);
        if (!get_magic_quotes_gpc()) {
            $status = addslashes($status);
        }


    $insert = mysql_query("INSERT INTO mingle_status (uid,sid,status,`timestamp`) VALUES ('$uid','$sid','$status',now())") or
    print mysql_error();

和我的輸出代碼:

while($st = mysql_fetch_assoc($statussql)) {
    $status = stripslashes($st['status']);
    $sid = $st['sid'];
    $td = $st['timestamp'];
?>
<div id="n">
<div id="statuses" class="<?php echo $sid; ?>">
<p><?php echo $status; ?></p>
<div id="statuscomadd" style="background:#E0E0E0;">
<a href="ld.php?uid=<?php $uid; ?>&pid=<?php echo $sid;?>&method=like">Like</a> <a href="ld.php?uid=<?php $uid; ?>&pid=<?php echo $sid;?>&method=dislike">Dislike</a><a href="#" id="time"><?php echo time_since($td) . " ago"; ?></a>
</div>  
</div>

任何幫助將不勝感激!:)

您不需要在插入時使用nl2br() ,則在html中顯示時必須使用它

並且必須在插入前去除長條stripslashes

插入時,只需對值進行mysql_real_escape_string() 您只想更改數據(例如,在顯示數據時使用htmlentities() )。

還請考慮停止將mysql_*函數用於新代碼。 它們已不再維護,社區已開始棄用過程 看到紅色框了嗎? 相反,您應該了解准備好的語句,並使用PDOMySQLi 如果您不能決定, 本文將有助於選擇。 如果您想學習, 這里有個不錯的PDO教程

另一件事:您真的需要htmlentities()嗎? 因為imo一個更好的解決方案是使用htmlspecialchars() 否則, 所有 html實體將被替換。

我也不認為您需要使用strip_tags() ,因為您已經在執行htmlspecialchars()來保護自己免受XSS攻擊。

現在對您來說問題是因為您正在使用stripslashes()破壞\\n換行符。 我認為您可以刪除那些add/stripslashes

您使用strip_tags(stripslashes(htmlentities(mysql_real_escape_string()))); \\n去除斜線。

只需將mysql_real_escape_string()htmlentities( ,ENT_QUOTES)用於HTML。

另外,如果可能,請使用UTF-8編碼和htmlspecialchars()而不是htmlentities() htmlentities()轉換具有HTML表示形式的每個字符,而htmlspecialchars()僅轉換必需的字符。 無需轉換所有內容。 請參閱: htmlentities vs htmlspecialchars

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM