这段代码有效,但我只是利用我对 PHP 的有限知识将其破解,我确信有一种更优雅、更有效的方法来处理它。如果你能指出我如何改进,那就太好了!
所以我有一个 CSV 文件,结构如下:
Code Class Value Status Date Created Date Redeemed
========================================================================
a51f3g45 gold 50 valid 2012-08-20
4f6a2984 silver 200 redeemed 2012-08-23 2012-08-27
gf3eb54b gold 150 valid 2012-08-30
etc...
用户填写表格以更改给定行的Class、Value和Status字段。我拼凑了以下代码以用新值替换旧值:
$file = 'codes.csv';
$old_csv_string = file_get_contents($file);
preg_match('/('.$_POST['code'].',.*,.*,.*,.*,.*)\n/',$old_csv_string,$matches);
$old_row = $matches[1];
preg_match('/'.$_POST['code'].',(.*,.*,.*),.*,.*\n/',$old_csv_string,$matches_part);
$old_row_part = $matches_part[1];
$new_row_part = $_POST['class'].",".$_POST['value'].",".$_POST['status'];
$new_row = str_replace($old_row_part,$new_row_part,$old_row);
$new_csv_string = str_replace($old_row,$new_row,$old_csv_string);
file_put_contents($file,$new_csv_string);
那么我能比 10 行代码做得更好吗?任何建议将不胜感激 :)
注意:我尝试使用fgetcsv
,但我不知道如何在二维数组中找到唯一代码,然后替换它的兄弟姐妹。