PHP将变量追加到文件中特定行的末尾

PHP将变量追加到文件中特定行的末尾,php,Php,所以我得到了以下函数: function searchWord($fileName, $str) { $addthis = “string”; $lines = file($fileName); foreach ($lines as $lineNumber => $line) { if (strpos($line, $str) !== false) { $lines[$lineNumber] = $li

所以我得到了以下函数:

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行的末尾(!!)


代码现在要做的是将$addthis添加到行的开头。我已经在网上搜索过了,但没有找到一个令人满意的解决方案。

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

$lines[$lineNumber] = trim($lines[$lineNumber]).$addthis.PHP_EOL;
此外,写入应该在循环之后进行。

试试这个

在我的示例中,我使用一个名为
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从哪里来?对不起,它应该是$lines而不是$test。编辑它,虽然我的问题已经由hek2mgl回答了@MarijnvanGool:顺便说一句,您根本不需要
内爆()
。可以通过先复制阵列来专门编辑一行。请看下面我的答案。@Amal Murali:好的,谢谢。我会记住的!反对票来自我这边,因为替换所有的行尾只是为了以后再添加它们是完全没有意义的。你以前听过“表演”这个词吗?
apple
bananastring
cherry