csv文件php中的目标字符串替换


Targeted string replace in csv file php

我有一个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将X1替换为A1,但如何进行目标字符串替换。

$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);

您可以使用file()将文件放入一个数组中,然后使用array_map()在每一行/元素上使用str_getcsv()。因此,您可以使用$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);
?>