У меня есть файл (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, новой.
Как мне отредактировать это так, чтобы, если строка не была найдена, она добавляла ее в конец текстового файла? Есть ли простой способ сделать это, или мне нужно немного изменить код, чтобы он работал? Благодарю.
Вы можете сделать что-то вроде этого:
$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);
}
Других решений пока нет …