所以我得到了以下功能:
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。我在网上搜索过但无法找到解决问题的方法。
答案 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
这就是你所追求的?