2013-12-11 63 views
0

我使用textarea在我的網站上寫評論。評論保存在SQLite數據庫中。回車(' n'和' r')未評估爲特殊字符

我的問題是,當我嘗試從數據庫檢索我的評論,以便用<p>標記替換每個回車標記(在向用戶顯示之前)。

我第一次嘗試nl2br函數,它工作正常,大量的<br/>出現在我的代碼。

然後,我已經嘗試:

substr_count($article->texte, '\n'); 
substr_count($article->texte, '\r'); 

但返回的結果總是0。這令我感到驚訝,因爲我認爲nl2br將取代\n\r字符。

我錯過了什麼嗎?

mb_detect_encoding($article->texte); //returns UTF8 
+9

使用雙引號來代替:'substr_count($物品─> texte, 」\ n「); [SUBSTR \ _count不是新生產線的工作?(HTTP的' –

+0

可能重複: //stackoverflow.com/questions/10367971/substr-count-not-working-with-new-lines) –

+0

@AmalMurali非常感謝!這些微妙之處記錄在案嗎?編輯:找到它http://uk.php.net/manual/en/language.types.string.php – Fractaliste

回答

1

你要明白,PHP解釋單引號內的文字從字面上看,但擴展了雙引號內的內容;所以你會得到不同的結果,如果你做

substr_count($article->texte, "\n"); 

要回答你的問題,使用nl2br是最快的,但如果你真的想用「</P > < p來代替「\ n」的每一個occurrance > 「然後執行:

$content = str_replace("\n", '</p><p>', $content); 
+0

我可以用'PHP_EOL'代替'「\ n」'和'「\ r」'嗎? – Fractaliste

+0

PHP_EOL的價值是平臺特定的,所以它與Mac等不同,比如Mac和Windows以及Linux等,而且應該只在您生成輸出時使用,所以在這種情況下我不會使用它。 – kguest

1

表達式如\ n和\ r進行評估,只有當在雙引號,所以嘗試「\ n」和「\ r」

+1

每個控制字符都是一樣的 –