Замена строки в файле с помощью PHP

В настоящее время я пытаюсь заменить строку в файле конфигурации, чтобы обновить версию. Линия выглядит так requiredBuild = 123456; и мне нужно изменить нумерацию. У меня есть следующее, которое вставляет новую строку после него, но мне нужно вместо этого фактически заменить существующую строку.

Как это будет достигнуто? ftell() дает мне POS после строки, которую я хочу заменить, но удаление оригинальной строки - вот где я запутался. Есть ли какой-нибудь способ сделать что-то вроде ftell() - strlen(thisline) и заменить его на ''?

<?

    $config = 'serverDZ.cfg';

    $file=fopen($config,"r+") or exit("Unable to open file!");
    $insertPos=0;

    while (!feof($file))
    {
        $line=fgets($file);

        if (strpos($line, 'requiredBuild') !== false)
        {
            $insertPos = ftell($file);
            $newline =  "requiredBuild = 124971;\n";

            break;
        }
    }

    fseek($file, $insertPos);
    fwrite($file, $newline);

    fclose($file);

?>

1 ответ

Решение

Попробуйте это решение:

<?php
$content = file($path);

foreach ($content as $line_num => $line) {
    if (false === (strpos($line, 'requiredBuild'))) continue;

    $content[$line_num] = "requiredBuild = 124971;\n";
}

file_put_contents($path, implode($content));
Другие вопросы по тегам