在csv文件php中有针对性的字符串替换

时间:2016-04-17 03:48:03

标签: php csv

我有一个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);

1 个答案:

答案 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);

?>