1

所以我得到了以下功能:

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 添加到行首。我在网上搜索过,但无法为我的问题找到令人满意的解决方案。

4

2 回答 2

1

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

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

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

于 2013-11-06T12:05:11.860 回答
-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

这就是你所追求的吗?

于 2013-11-06T12:09:44.223 回答