PHP如何在文件开头写入内容且保留固定首行?
解决固定头部下的倒序内容写入问题
嘿,这个需求其实很好实现,核心思路就是保留固定头部不重复,每次把新内容插在头部和原有内容之间,我给你捋清楚步骤,再直接上可用的代码:
实现思路
- 先定义好永远不变的固定头部,避免每次手动拼接出错。
- 处理POST提交的新内容时,先读取现有文件的内容。
- 把现有内容里的固定头部去掉(如果有的话),防止重复添加。
- 把新内容放在原有内容的前面,再和固定头部组合起来写入文件,这样既保证头部在最顶端,新内容也始终排在最前面(实现倒序)。
具体代码实现
// 定义固定头部,注意加上换行符让内容排版更清晰 $fixedHeader = '<!DOCTYPE html><html><head>' . PHP_EOL; // 处理POST请求 if ($_SERVER['REQUEST_METHOD'] === 'POST' && !empty($_POST['data'])) { // 获取并格式化新内容,加上换行符让每条内容单独一行 $newContent = trim($_POST['data']) . PHP_EOL; $filePath = 'testz.php'; // 读取现有文件内容,文件不存在则为空字符串 $existingContent = file_exists($filePath) ? file_get_contents($filePath) : ''; // 移除已存在的固定头部,避免重复添加 // 如果你用的是PHP 8.0及以上版本,用str_starts_with更简洁 if (str_starts_with($existingContent, $fixedHeader)) { $existingContent = substr($existingContent, strlen($fixedHeader)); } // 如果你用的是PHP 7.x及以下版本,替换成下面这段判断: // if (substr($existingContent, 0, strlen($fixedHeader)) === $fixedHeader) { // $existingContent = substr($existingContent, strlen($fixedHeader)); // } // 组合最终内容:固定头部 + 最新内容 + 原有内容(已去掉头部) $finalContent = $fixedHeader . $newContent . $existingContent; // 写入文件 file_put_contents($filePath, $finalContent); }
代码说明
- 固定头部处理:通过判断现有内容是否以固定头部开头,确保每次写入都只会保留一份头部,不会重复堆积。
- 倒序实现:新内容被放在原有内容(去掉头部)的前面,所以每次提交的内容都会出现在头部下方的最顶端,自然形成倒序。
- 兼容性考虑:针对不同PHP版本提供了两种头部判断的方式,你可以根据自己的环境选择。
这样你依次提交Red 、Green 、Blue 后,文件内容就会变成:
<!DOCTYPE html><html><head> Blue Green Red
内容的提问来源于stack exchange,提问作者J Zersche
相关产品推荐
相关产品推荐

