Отфильтровать строку в файле CSV по разделителю в PHP - PullRequest
0 голосов
/ 01 августа 2020

Это сложно объяснить в заголовке, но ...

У меня есть example.csv здесь:

'location': 'United States#Arizona#Mesa', 'value: 10', 'value2: 20'
'location': 'United States#New York', 'value: 24', 'value2: 29'
'location': 'United States#Arizona', 'value: 21', 'value2: 24'
'location': 'United States', 'value: 11', 'value2: 22'

Я хочу, чтобы он был перезаписан как:

'location': 'Mesa', 'value: 10', 'value2: 20'
'location': 'New York', 'value: 24', 'value2: 29'
'location': 'Arizona', 'value: 21', 'value2: 24'
'location': 'United States', 'value: 11', 'value2: 22'

путем получения всех значений в первой строке, разделения их с помощью разделителя «#», затем получения первого и последнего значения и удаления остальных. Как это сделать с помощью PHP?

1 Ответ

0 голосов
/ 01 августа 2020

Учитывая, что имя вашего CSV-файла a.csv, вот код

<?php

$newCsv = array();

// Get the file in an array
$csv = array_map('str_getcsv', file('a.csv'));

foreach($csv as $row){
    //Get the first column
    $str = $row[0];
    
    // Split the string
    
    $strParts = explode('#', $str);
    $size =  sizeof($strParts);

    // If it contains #?
    if($size > 1){
        $newFirstRow = "'location' : '". $strParts[$size -1]."'";
    } else{
        $newFirstRow = $row[0];
    }
    

    array_push($newCsv, array($newFirstRow, $row[1], $row[2]));
}


// Open the file in write mode ('w') 
// Remember, this will rewrite the file completely
// If you want to backup the file
// do it before executing this code
$fp = fopen('a.csv', 'w'); 
  
// Loop through file pointer and a line 
foreach ($newCsv as $fields) { 
    fputcsv($fp, $fields); 
} 
  
fclose($fp); 


?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...