PHP: 替换文件中的行或如果找不到则添加
PHP: Replace line in a file or add if not found
我有一个看起来像这样的文件 (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 文件的末尾?有没有一种简单的方法可以做到这一点,或者我是否需要对代码进行大量修改才能使其工作?谢谢
你可以这样做:
$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);
}
我有一个看起来像这样的文件 (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 文件的末尾?有没有一种简单的方法可以做到这一点,或者我是否需要对代码进行大量修改才能使其工作?谢谢
你可以这样做:
$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);
}