用PHP替换文件中的一行

时间:2014-09-18 02:46:05

标签: php string line strpos

我目前正在尝试替换配置文件中的一行来更新版本。该行看起来像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 个答案:

答案 0 :(得分: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));