barantaran
11/6/2017 - 8:54 PM

Simple filed data filtering, line by line

Simple filed data filtering, line by line

<?php
/**
* Filters file line by line
* @param string $sourceFile filepath
* @param array $filter ["lookingFor" => "replacedBy"]
*/
function filterData($sourceFile=null, $filter=null) {
    if(!$sourceFile || !$filter) return null;

    $filteredData = "";

    $handle = fopen($sourceFile, "r");
    if ($handle) {
        while (($line = fgets($handle)) !== false) {
            $filteredLine = filterLine($line, $filter);
            $filteredData.= $filteredLine;
        }

        fclose($handle);
    } else {
        // error opening the file.
    } 

    return $filteredData;
}

/**
* Filers line
* @param string $line
* @param array $filter ["lookingFor" => "replacedBy"]
*/
function filterLine($string, $filter){
    $filteredLine = $string;
    foreach($filter as $lookingFor => $replacedBy)
    {
        $filteredLine = str_replace($lookingFor, $replacedBy, $filteredLine);
    }

    return $filteredLine;
}

//Start
$sourceFile = __DIR__."/extracted.txt";
$ouptutFile = __DIR__."/filtered.txt";
$filter = ["../" => ""];

$filteredData = filterData($sourceFile, $filter);
file_put_contents($ouptutFile, $filteredData);