Допустим, у нас есть файл, открытый с помощью fopen. Можно ли написать в ту же строку, с которой мы читаем?
В основном я работаю с CSV-файлами, и мне нужно записать значения в строки, которые не имеют второго или первого значения. (Example1; example2)
Благодарю.
Пример CSV:
Sally Whittaker,2018,McCarren House,312,3.75
Cushing House,148,3.52
Prescott House,17-D,3.20
Sandy Allen,2019,Oliver House,108,3.48
Вторая и третья строка — первые два элемента отсутствуют.
Код:
$file=file("csv.csv");
$str='';
foreach ($file as $line) {
$liner=explode(',',$line);//use your own separator
if(count($liner)<5) {
array_unshift($liner, 'item1','item2');//put items at the start
$str.= implode(',', $liner);
}
else {
$str.=implode(',', $liner);
}
}
file_put_contents('csv.csv', $str);
Выходной CSV:
Sally Whittaker,2018,McCarren House,312,3.75
item1,item2,Cushing House,148,3.52
item1,item2,Prescott House,17-D,3.20
Sandy Allen,2019,Oliver House,108,3.48
РЕДАКТИРОВАТЬ:
если CSV (вероятно), имеют эту структуру:
Sally Whittaker,2018,McCarren House,312,3.75
,ddd,Cushing House,148,3.52
,xxxx,Prescott House,17-D,3.20
Sandy Allen,2019,Oliver House,108,3.48
код может быть:
$file=file("csv.csv");
$str='';
foreach ($file as $line) {
$liner=explode(',',$line);
if($liner[0]=='') { //check if first item is empty!
$liner[0]='item';
}
$str.=implode(',', $liner);
}
file_put_contents('csv.csv', $str);
Других решений пока нет …