Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    Soluzione Migliore per gestire un file Txt con questa struttura [start_file]

    Buonasera a tutti, ho cercato nel forum ma non ho le idee molto chiare, vorrei capire se con il php posso leggere da un file che viene generato da una apparecchiatura che gestisce delle cisterne , in particolare questo file ha una configurazione di questo tipo :
    Il nome di questo file segue la seguente regola: NNNNPPPP.P Dove: - NNNN = numero della stazione - PPPP = numero del periodo corrispondente (giornata)
    E’ un file sequenziale, in formato ASCII, un testo. L’inizio del file è definito da [START_FILE] e la fine da [END_FILE]
    Le varie informazioni sono incluse in “gruppi” o “blocchi” (che definiscono già a cosa si riferiscono le informazioni in essi comprese) delimitati da una parola chiave compresa tra [ ] e dalla parola chiave stessa preceduta da “END_” sempre compresa tra [ ]. Esempio:
    [STATUS]
    OPEN=20120120102608
    CLOS=20120125100256
    CLOSE_TYPE=1
    SWV=EUR 29.01 14-12-2011
    STID=8016
    CODEPAGE=1252
    FDATI=20120124165300
    SDATI=20120123161007
    REP_NR=391
    [END_STATUS]
    All’interno di ogni gruppo ogni dato è definito da una Tag.
    Dovrei creare un programma che mi scarichi questo file via FTP ( al max lo faccio con un file batch se complesso con php) dopo dovrei pescare alcuni di questi dati e visualizzarli su una pagina web e creare anche una tabella in xls qualche consiglio ?

    Grazie

    Tiziano

  2. #2
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202
    Ciao

    Codice PHP:
    class Configuration
        const 
    PATH_DELIMITER '.'

        private 
    $configuration = array(); 
        private 
    $resource;
         
        public function 
    __construct($resource){
            
    $this->resource $resource
            
    $this->_parse(); 
        } 
         
        private function 
    _parse(){ 
            if(
    is_readable($this->resource)===false
                die(
    "Impossibile aprire il file di configurazione ".$this->resource); 
            
    $this->configuration parse_ini_file($this->resource,true); 
        } 
         
        public function 
    get($path$default null){ 
            
    $r $this->search($path); 
            if(
    $r['_found']===true)
                return 
    $r['_value'];
            
            return 
    $default
        } 
         
        public function 
    set($path,$value){ 
            
    $r $this->search($path,true); 
            
    $r['_value'] = $value

            return 
    $this
        } 
         

        private function 
    search($path,$create false){ 
            
    $rit = array('_found' => false'_value' => null); 
            
    $keys explode(self::PATH_DELIMITER,$path); 

            if(!
    is_array($this->configuration)){ 
                if(
    $this->configuration!==null
                    
    $this->configuration = array($this->configuration); 
                else 
                    
    $this->configuration = array(); 
            } 
             
            
    $tmp =& $this->configuration
            
    $lastKeyI count($keys)-1
             
            foreach(
    $keys as $i => $key){ 
                if(!
    is_array($tmp) || !array_key_exists($key$tmp)){ 
                    if(!
    $create
                        break; 
                     
                    
    $tmp[$key] = array(); 
                    
    $tmp =& $tmp[$key]; 
                     
                }else if(
    array_key_exists($key$tmp)){ 
                    if(
    $i == $lastKeyI)
                        
    $rit['_found'] = true
                     
                    
    $tmp =& $tmp[$key]; 
                } 
                 
                
    $rit['_value'] =& $tmp
            } 
             
            if(
    $rit['_found']===false && $create === false
                
    $rit['_value'] = null
             
            return 
    $rit
        } 


    test.php
    $conf = Configuration('application.setting.ini');
    $conf->get('database.host'); //restituisce "localhost" come si evince dal file

    Esempio mio file .ini
    [application]
    debug = true

    [database]
    database = xx
    host = localhost
    port =
    driver = xx
    username = xx
    password = xx


    Ti passo la mia classe, come puoi vedere ho una struttura molto simile al tuo file, magari ha bisogno solo di qualche aggiustamento.
    Che mestiere difficile.....essere da soli ancora di più

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.