我有一个csv文件如下
Head1,Head2,Head3
a,b,c
X1,c,X1
基于数组输入,我必须将X1的值替换为A1。所以如果数组输入[2,2],输出应为
Head1,Head2,Head3
a,b,c
X1,c,A1
如果数组输入[2,0],我的输出应为
Head1,Head2,Head3
a,b,c
A1,c,X1
我使用str_replace用A1替换X1,但是如何进行有针对性的字符串替换。
$path_to_file = dirname(__DIR__)."/abc.csv";
$file_contents = file_get_contents($path_to_file);
$file_contents = str_replace("X1","A1",$file_contents);
file_put_contents($path_to_file,$file_contents);
答案 0 :(得分:1)
您可以使用file()
将文件转换为数组,然后使用str_getcsv()
在每个行/元素上使用array_map()
。因此,您可以使用$file[row][column]
访问每个值,并根据需要更改值。
要将其保存回来,您只需打开文件并将数据放回fputcsv()
。
代码:
<?php
$lines = file("test.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$lines = array_map("str_getcsv", $lines);
$input = ["row" => 2, "column" => 0];
$lines[$input["row"]][$input["column"]] = "A1";
$fp = fopen('file.csv', 'w');
foreach ($lines as $line)
fputcsv($fp, $line);
fclose($fp);
?>