PHP将变量附加到文件中特定行的END

时间:2013-11-06 11:49:48

标签: php

所以我得到了以下功能:

function searchWord($fileName, $str) {
    $addthis = “string”;
    $lines = file($fileName);
    foreach ($lines as $lineNumber => $line) {
            if (strpos($line, $str) !== false) {
                    $lines[$lineNumber] = $lines[$lineNumber].$addthis
           file_put_contents($filename, implode($lines) . PHP_EOL);
                    break;
            } else {
                    // do nothing
            }
    }

}

它在文件$ fileName中搜索特定字符串$ str。然后它应该将$ addthis添加到找到$ str的$ lineNumber行的END(!!)。

现在代码的作用是在行的开头添加$ addthis。我在网上搜索过但无法找到解决问题的方法。

2 个答案:

答案 0 :(得分:1)

在添加行之前,您需要从行末尾删除换行符,然后在写回文件之前将新行字符添加回其末尾。下面更新的行应该有所帮助。

$lines[$lineNumber] = trim($lines[$lineNumber]).$addthis.PHP_EOL;

此外,写入应该在循环之后发生。

答案 1 :(得分:-1)

试试这个。

在我的示例中,我使用名为test.txt的文本文件,其中包含以下3行:

apple
banana
cherry

这是PHP代码。

<?php

// Search Function
function searchWord($fileName, $str, $addThis = 'string') {
    if (file_exists($fileName)) {
        $lines = file($fileName);
        array_walk_recursive($lines, function(&$line) {
            $line = trim($line);
        });
        foreach ($lines as $lineNo => $lineStr) {
            if (false !== strpos($lineStr, $str)) {
                $lines[$lineNo] = $lineStr . $addThis;
                break;
            }
        }
        file_put_contents($fileName, implode(PHP_EOL, $lines));
    }
}

// Usage
searchWord('test.txt', 'banana', 'string');

?>

运行脚本后,test.txt的内容为:

apple
bananastring
cherry

这就是你所追求的?