2016-04-17 30 views
-1

代替我有一個csv文件如下目標串中csv文件PHP

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); 
+0

爲什麼downvote ??? – Ank

+0

我不知道我是否正確,但是您的數組正在定義要用'A1'替換'X1'的行和列?如果是的話,你想用'A1'還是隻有在'X1'的時候才替換? – Rizier123

+0

@ Rizier123好點。現在,任何與A1。我可以自己做驗證.. – Ank

回答

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

?> 
+0

你在做什麼:$ input = [「行「=> 2,」列「=> 0]; ??爲什麼> = – Ank

+0

@Ank顯示如何使用輸入數組來更改所需的值 – Rizier123

+0

以及爲什麼FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES – Ank