首页 > 解决方案 > PHP:替换文件中的行或如果找不到则添加

问题描述

我有一个看起来像这样的文件(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 文件的末尾?有没有一种简单的方法可以做到这一点,或者我需要对代码进行相当多的修改才能使其工作?谢谢。

标签: phpfilereplaceadd

解决方案


你可以这样做:

$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);
}

推荐阅读