HTML <textarea> 中用戶輸入的換行符(\r\n 或 \n)若直接輸出到網頁,瀏覽器不會渲染換行,導致內容擠在一行。必須將換行符轉換為 HTML 換行標籤 <br /> 才能正確顯示排版。
nl2br() 內建函數(推薦)<?php
$str = $_GET['test'];
echo nl2br($str); // 自動將 \n \r\n 轉為 <br />
?>
<?php
$str = $_GET['test'];
$arr = explode("\n", $str); // 按換行符分割為數組
print_r($arr);
echo count($arr); // 行數
// 或使用 str_replace
$str = str_replace("\n", "<br />", $str);
echo $str;
?>
<html>
<body>
<form action="" method="get">
<textarea name="test"></textarea>
<input type="submit" />
</form>
<?php
if (isset($_GET['test'])) {
$str = $_GET['test'];
echo nl2br($str);
}
?>
</body>
</html>
論壇常見需求:將 textarea 多行內容拆分為數組逐行處理(如批量添加用戶)。
<?php
$names = preg_split('/\r\n/', $_POST['textarea']);
foreach ($names as $name) {
// 處理每一行,如 echo $name;
}
?>
從數據庫讀取數據填充 textarea 時,需用換行實體
(對應 \r\n):
<?php
$vals = get_from_db();
$tmp = '';
foreach ($vals as $val) {
$tmp .= $val . '
';
}
echo "<textarea>$tmp</textarea>";
?>
nl2br() 是最簡便方案;批量處理用 preg_split;寫入 textarea 需用
。掌握這三招,輕松搞定換行顯示與存儲。