在 PHP 開發中,經常需要將前端表單提交的文字資料,按行拆分後自動生成對應的 TXT 檔案。本文提供一個完整的兩檔案實作範例,包含前端表單頁面與後端處理邏輯,適合初學者快速掌握檔案寫入與編碼轉換的核心技巧。
此頁面包含分類下拉選單、模糊關鍵字輸入框,以及一個可輸入多行標題的文字區域。使用者每行輸入一個標題,送出後將由後端程式逐行建立同名的 TXT 檔案。
<?php error_reporting(0); ?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>批量建立 TXT 檔案</title>
<link type="text/css" rel="stylesheet" href="/xwyfb/fb_css.css">
</head>
<body>
<div class="dcwj">
<form id="tjsd" name="tjsd" action="dcwj_cl.php" method="post" onSubmit="return checkForm()">
<div class="dcwj_div1">
<p class="dcwj_div1_p1">目前專案分類:</p>
<p class="dcwj_div1_p2">
<select name="liebie" id="liebie">
<?php /* 這裡原本連接資料庫讀取分類,示範用靜態選項 */ ?>
<option value="1">1=>新聞=>科技</option>
<option value="2">2=>部落格=>生活</option>
</select>
</p>
</div>
<div class="dcwj_div1">
<p class="dcwj_div1_p1">模糊關鍵字:</p>
<p class="dcwj_div1_p2"><input name="mhgjc" id="mhgjc" value="" type="text"></p>
</div>
<div class="dcwj_div2">
<p class="dcwj_div2_p1">請輸入標題<br>*(一行一個)</p>
<p class="dcwj_div2_p2"><textarea name="biaoti" id="biaoti" class="dcwj_biaoti" cols="50" rows="10"></textarea></p>
</div>
<div class="dcwj_div2"><input name="submit" type="submit" value="提交建立"></div>
</form>
</div>
</body>
</html>
後端接收 $_POST['biaoti'],以換行符拆分成陣列,逐行處理:將檔名由 UTF-8 轉為 GBK(避免中文檔名亂碼),在專案根目錄下的 text/ 資料夾建立同名 .txt 檔案,並寫入示範資料。
<?php
// 1. 接收並拆分標題資料
$biaoti_cl = explode("\n", $_POST['biaoti']);
$biaoti_num = count($biaoti_cl);
$file_type = "txt";
// 2. 示範要寫入的資料結構
$data = array(array("tom", "boy", 20));
// 3. 目標資料夾(需先手動建立 text 資料夾並給予寫入權限)
$dir = dirname(__FILE__) . "\\text\\";
for ($i = 0; $i < $biaoti_num; $i++) {
// 檔名編碼轉換:UTF-8 → GBK
$file_name = mb_convert_encoding(trim($biaoti_cl[$i]), 'GBK', "UTF-8");
if (empty($file_name)) continue; // 略過空行
// 組合寫入字串
$string = "";
foreach ($data as $row) {
foreach ($row as $val) {
$string .= mb_convert_encoding($val, 'GBK', "UTF-8");
}
}
$string .= "\r\n";
// 建立完整路徑並寫入
$filedir = $dir . $file_name . "." . $file_type;
$fp = fopen($filedir, "a+");
if ($fp) {
fwrite($fp, $string);
fclose($fp);
echo '成功建立:' . $filedir . '<br>';
} else {
echo '建立失敗:' . $filedir . '<br>';
}
}
?>
text/ 資料夾,並確保 Web 服務器擁有寫入權限(Linux 下通常設為 755 或 777)。../)等防護措施。mysqli 或 PDO 實作。掌握此流程後,即可輕鬆擴充為批量匯出報表、產生靜態頁面、備份使用者輸入等實務應用。