Search code examples
phparrayscsvfiltering

Populate a 2d array with qualifying data from a multi-line txt file containing comma-separated values


Below script is shown search string in a text file, my text file has contents like:

60, 1, 1, 188, pdgje5566

60, 1, 1, 188, pdgje5565

if(!empty($extTxId)){
$searchfor = $extTxId;

$matches = array();

$handle = @fopen($file, "r");
if ($handle)
{
    while (!feof($handle))
    {
        $buffer = fgets($handle);
        if(strpos($buffer, $searchfor) !== FALSE)
            $matches[] = $buffer;
    }
    fclose($handle);
}

print_r($matches);

it output as

Array ( [0] => 60, 1, 1, 188, ppje5566 )

However, I want to explode the data which is separate by comma(,) and store into variable, is that anyway to do it?


Solution

  • Since you have spaces between each comma, you can trim each element.

    // Iterate through each item int the array (you can do $matches[0] if you just want the first)
    foreach ($matches as $match)
    {
         $output_array = array_map('trim',explode(',',$match));
    
         print_r($output_array);
    }
    

    Output:

    Array
    (
        [0] => 60
        [1] => 1
        [2] => 1
        [3] => 188
        [4] => pdgje5565
    )
    

    Example: http://codepad.org/aSyVX5Bj