我有一个文件(messages.txt),看起来像这样:
112233|A line of text here.
aabbcc|More text here.
223344|And the list goes on...
和类似的代码可以正常工作:
$filename = 'messages.txt';
$data = file($filename);
file_put_contents($filename, implode('',
array_map(function($data) {
return stristr($data,'aabbcc') ? "aabbcc|This would be a NEW line.\n" : $data;
}, file($filename))
));
因此,这会将找到aabbcc的行替换为新行。 我如何编辑它,以便在找不到该行的情况下将其添加到txt文件的末尾?有没有简单的方法可以执行此操作,或者我需要对代码进行大量修改才能使其正常工作?谢谢。
答案 0 :(得分:1)
您可以执行以下操作:
$message_exists = false;
$filename = 'messages.txt';
$data = file($filename);
file_put_contents($filename, implode('',
array_map(function($data) use (&$message_exists){
$result = substr($data, 0, strlen('aabbcc|')) === 'aabbcc|';
if($result)
{
$message_exists = true;
}
return $result ? "aabbcc|This would be a NEW line.\n" : $data;
}, file($filename))
));
if(!$message_exists)
{
file_put_contents($filename, "aabbcc|This would be a NEW line.\n", FILE_APPEND);
}