Citeste si scrie fisiere tsv

Stefanescu Mihai 2 years ago Snippets
//
// save an array as tab seperated text file
//
 
function write_tabbed_file($filepath, $array, $save_keys=false){
    $content = '';
 
    reset($array);
    while(list($key, $val) = each($array)){
 
        // replace tabs in keys and values to [space]
        $key = str_replace("\t", " ", $key);
        $val = str_replace("\t", " ", $val);
 
        if ($save_keys){ $content .=  $key."\t"; }
 
        // create line:
        $content .= (is_array($val)) ? implode("\t", $val) : $val;
        $content .= "\n";
    }
 
    if (file_exists($filepath) && !is_writeable($filepath)){ 
        return false;
    }
    if ($fp = fopen($filepath, 'w+')){
        fwrite($fp, $content);
        fclose($fp);
    }
    else { return false; }
    return true;
}
 
//
// load a tab seperated text file as array
//
function load_tabbed_file($filepath, $load_keys=false){
    $array = array();
 
    if (!file_exists($filepath)){ return $array; }
    $content = file($filepath);
 
    for ($x=0; $x < count($content); $x++){
        if (trim($content[$x]) != ''){
            $line = explode("\t", trim($content[$x]));
            if ($load_keys){
                $key = array_shift($line);
                $array[$key] = $line;
            }
            else { $array[] = $line; }
        }
    }
    return $array;
}
 
/*
** Example usage:
*/
 
$array = array(
    'line1'  => array('data-1-1', 'data-1-2', 'data-1-3'),
    'line2' => array('data-2-1', 'data-2-2', 'data-2-3'),
    'line3'  => array('data-3-1', 'data-3-2', 'data-3-3'),
    'line4' => 'foobar',
    'line5' => 'hello world'
);
 
// save the array to the data.txt file:
write_tabbed_file('data.txt', $array, true);
 
/* the data.txt content looks like this:
line1	data-1-1	data-1-2	data-1-3
line2	data-2-1	data-2-2	data-2-3
line3	data-3-1	data-3-2	data-3-3
line4	foobar
line5	hello world
*/
 
// load the saved array:
$reloaded_array = load_tabbed_file('data.txt',true);
 
print_r($reloaded_array);
// returns the array from above

 

Programator de ~8 ani, am lucrat la proiecte din mai multe industrstrii, de la eCommerce la telecomunicatii la automatizari. In acest timp am folosi diferite tehnologii, de la PHP, MySQL, PostgreSql, RabbitMq, Redis, Memcached si altele.


Get in touch
Pentru nelamuriri, dubii, comentarii si chestii de pe suflet ne putem auzi pe Discord, Reddit sau poti deschide o discutie noua pe forum

Club-ul este dedicat membrilor si ofera access la mai multe zone ale website-ului.
Login Register

🔖 Bookmarks
âœĻ Pentru a sustine aceasta comunitate am sa te rog sa te autentifici sau sa te inregistrezi!

🌊ïļ Discord
Back to top
Folosim cookie-uri pentru a oferi functionalitatile critice ale aplicatiei Invata-Programare. Folosim cookie-uri si pentru a analiza traficul, pentru care e nevoie de consimtamantul dvs. explicit.