PHP:替换文件中的行或添加(如果找不到)

时间:2019-01-15 16:50:09

标签: php file replace add

我有一个文件(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文件的末尾?有没有简单的方法可以执行此操作,或者我需要对代码进行大量修改才能使其正常工作?谢谢。

1 个答案:

答案 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);
}