我想根据条件修改.txt文件中的某些行。
CODE:(php)
$sur = "newsur";
$nume = "newname";
$contacte = [];
if (file_exists("Contacts.txt"))
{
$find = fopen("Contacts.txt", "r");
while ($Row = fgets($find))
{
$line = explode(";", $Row);
$contact = ['Surname' => $date[0], 'Name' => $date[1], ];
if ( $contact['Surname'] == "nume1" && $contact['Name'] == "nume2" )
{
$contact['Surname']=$sur;
$contact['Name']=$nume;
}
$contacte[]=$contact;
}
fclose ($find);
}
$file = fopen("Contacts.txt", "w");
{
if ($file){
foreach($contacte as $c){
fwrite ($file,"{$c['Surname']};{$c['Name']} \n");
}
}
}
fclose ( $file );
?>
我的文件有2行
nume1; nume2
nume3; nume4
我很确定自己搞砸了数组声明并得到了.txt
文件元素,因为它会说我有未识别的变量。执行后,在此行
$contact = ['Surname' => $date[0], 'Name' => $date[1], ];
我将得到4个不确定的变量错误(因此,我有2行,每行2个元素),我的文档内容将被删除,只有“;”将再次添加。
答案 0 :(得分:0)
这可以简化很多。由于要替换的行中分号定界符两侧的两个字符串都等于特定值,因此无需爆炸分号上的每一行并检查单独的部分,只需匹配整行即可。
$sur = "newsur";
$nume = "newname";
$contacts = [];
if (file_exists('Contacts.txt')) {
$rows = file('Contacts.txt', FILE_IGNORE_NEW_LINES); // get all the rows
foreach ($rows as $row) {
$contacts[] = ($row == 'nume1;nume2') ? "$sur;$nume" : $row; // replace matching rows
}
}
file_put_contents('Contacts.txt', implode("\n", $contacts)); // write results