gpt4 book ai didi

php - 使用 PHP 在文件中动态插入行

转载 作者:行者123 更新时间:2023-12-04 06:22:54 25 4
gpt4 key购买 nike

我想让我的用户下载一个 .php 文件。

每个文件都因用户而异:
在第 20 行,我定义了一个等于用户 ID 的变量。

为此,我尝试了以下操作:复制原始文件。读到第 19 行 ( fgets ) 然后是 fputs PHP 行,然后提供要下载的文件。

问题是,该行不是在第 19 行之后插入,而是在 .php 文件的末尾。这是代码:

if (is_writable($filename)) {

if (!$handle = fopen($filename, 'a+')) {
echo "Cannot open file ($filename)";
exit;
}

for ($i = 1; $i <= 19; $i++) {
$offset = fgets($handle);
}

if (fwrite($handle, $somecontent) === FALSE) {
exit;
}

fclose($handle);
}

你会怎么办 ?

最佳答案

追加模式 +a在 fopen() 中将句柄的指针放在文件的末尾。您的 fgets() 循环将失败,因为文件末尾没有任何内容可供读取。你基本上做了 19 次无操作。然后,您的 fwrite 将按预期在文件末尾输出您的新值。

要进行插入,您需要 rewind() 开始的句柄,然后执行 fgets() 循环。

然而,如果你只是想让人们得到这个修改过的文件,为什么还要费心去做“打开文件、扫描、写入更改、提供文件”呢?这会在您的系统上留下大量几乎重复的内容。更好的方法是将您的文件分成两部分,然后您可以执行一个简单的操作:

readfile('first_part.txt');
echo "The value you want to insert";
readfile('last_part.txt');

这使您不必每次都保存"new"文件。这也将允许任意长度的插入。您的 fwrite 方法可能会破坏文件的后面部分。例如您扫描到偏移量“10”并写出 4 个字节,这将替换原始文件中该位置的原始 4 个字节。在某些时候,它可能会变成 5 个字节的输出,而现在您已经在原始文件中丢弃了一个字节,并且可能有一个损坏的文件。

关于php - 使用 PHP 在文件中动态插入行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6345259/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com