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