You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP如何在文件开头写入内容且保留固定首行?

解决固定头部下的倒序内容写入问题

嘿,这个需求其实很好实现,核心思路就是保留固定头部不重复,每次把新内容插在头部和原有内容之间,我给你捋清楚步骤,再直接上可用的代码:

实现思路

  1. 先定义好永远不变的固定头部,避免每次手动拼接出错。
  2. 处理POST提交的新内容时,先读取现有文件的内容。
  3. 把现有内容里的固定头部去掉(如果有的话),防止重复添加。
  4. 把新内容放在原有内容的前面,再和固定头部组合起来写入文件,这样既保证头部在最顶端,新内容也始终排在最前面(实现倒序)。

具体代码实现

// 定义固定头部,注意加上换行符让内容排版更清晰
$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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:41:03