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, новой.
Как мне отредактировать это так, чтобы, если строка не была найдена, она добавляла ее в конец текстового файла? Есть ли простой способ сделать это, или мне нужно немного изменить код, чтобы он работал? Благодарю.

0

Решение

Вы можете сделать что-то вроде этого:

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

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector