輸入內容,並且在 textarea換行, 但save的時候卻沒有換行

<form action="" method="post">
    <textarea rows="3" name="content"></textarea>
    <button type="submit">Save</button>
</form>

這是一個十分平常的form,如果經常用來做input是沒有問題的

比如在textarea 你輸入了

1
2

4
5

你點擊了save後,再讀出你會發現顯示

12 45

這是因為textarea 送到php的時候,會把換行之類的取換成 \n\r

我們需要把他們取換成<br />

php 官方已經有相對應的內置函數: nl2br()
REF: https://www.php.net/manual/en/function.nl2br.php

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

echo $content;

如果是上面的例子,你就會見到

1<br/>
2<br />
 <br>
4<br/>
5

這是個非常基礎/常見的問題,剛好工作上有新手成員遇上這個問題,一問之下才知道原來是因為現在所有的文字類輸入框,基本上都是用了打包的editor編輯器,比如 ckeditor ,所以很少會直接用textarea

但本次的project中剛好有個簡易的留言位置,如果用編輯框反而有些奇怪,不過大家要注意,如果單純用<textarea>給用戶留言/送發內容去你的數據庫,必定要考慮到過濾安全性內容,比如:

  1. 防止他們保存 js 內容
  2. 防止sql注入 (現代的PHP建議一定要用到php-pdo)

這次 textarea換行 是個很新手的話題,如果大家有需要了解這些基礎的話題可留言給我們,日後如果遇到更多這類的情況,我們都可分享出來。