使用 fopen 在文本多次出现后添加一些文本
using fopen to add some text after multiple appearance of a text
我想做的是在脚本中为我的世界日历创建一个安装程序。
我需要对主脚本中的其中一个文件进行一些更改。
我已经设法使用上面的代码进行了我想要的更改。问题是发生了不止一次。每次重复字符串时如何进行相同的更改。它可能发生 0 或 1 或 2 次
$target_line='$second = (int)substr($raw_date, 17, 2);';
$lines_to_add= '$raw_date = translate_from_gregorian($raw_date);'. PHP_EOL.
'$year = (int)substr($raw_date, 0, 4);'. PHP_EOL.
'$month = (int)substr($raw_date, 5, 2);'. PHP_EOL.
'$day = (int)substr($raw_date, 8, 2);'. PHP_EOL;
$config ='includes/functions/general.php';
$file=fopen($config,"r+") or exit("Unable to open file!");
$insertPos=0; // variable for saving //Users position
while (!feof($file)) {
$line=fgets($file);
if (strpos($line,$target_line)!==false) {
$insertPos=ftell($file); // ftell will tell the position where the pointer moved, here is the new line after //Users.
$newline = $lines_to_add;
} else {
$newline.=$line; // append existing data with new data of user
}
}
fseek($file,$insertPos); // move pointer to the file position where we saved above
fwrite($file, $newline);
fclose($file);
将整个文件读入一个变量。使用 str_replace()
进行所有替换。然后将结果写回文件。
$contents = file_get_contents($config);
$contents = str_replace($target_line, $target_line . PHP_EOL . $lines_to_add, $contents);
file_put_contents($config, $contents);
我想做的是在脚本中为我的世界日历创建一个安装程序。 我需要对主脚本中的其中一个文件进行一些更改。 我已经设法使用上面的代码进行了我想要的更改。问题是发生了不止一次。每次重复字符串时如何进行相同的更改。它可能发生 0 或 1 或 2 次
$target_line='$second = (int)substr($raw_date, 17, 2);';
$lines_to_add= '$raw_date = translate_from_gregorian($raw_date);'. PHP_EOL.
'$year = (int)substr($raw_date, 0, 4);'. PHP_EOL.
'$month = (int)substr($raw_date, 5, 2);'. PHP_EOL.
'$day = (int)substr($raw_date, 8, 2);'. PHP_EOL;
$config ='includes/functions/general.php';
$file=fopen($config,"r+") or exit("Unable to open file!");
$insertPos=0; // variable for saving //Users position
while (!feof($file)) {
$line=fgets($file);
if (strpos($line,$target_line)!==false) {
$insertPos=ftell($file); // ftell will tell the position where the pointer moved, here is the new line after //Users.
$newline = $lines_to_add;
} else {
$newline.=$line; // append existing data with new data of user
}
}
fseek($file,$insertPos); // move pointer to the file position where we saved above
fwrite($file, $newline);
fclose($file);
将整个文件读入一个变量。使用 str_replace()
进行所有替换。然后将结果写回文件。
$contents = file_get_contents($config);
$contents = str_replace($target_line, $target_line . PHP_EOL . $lines_to_add, $contents);
file_put_contents($config, $contents);