• User Attivo

    PROBLEMA con funzione php explode per convertire stringa in array. AIUTO!

    salve
    ho un problema con la funzione explode
    devo creare un array partendo da un file csv che ha come delimitatore la virgola
    strutturato in questo modo

    prodotto,codice,quantita,prezzo
    acqua,mg33,4 litri,12
    colla,k334,"2,2 gr",15

    per convertire uso la funzione

    $array = explode(",",$stringa);
    
    

    o anche

    $array = split(",",$stringa);
    
    

    ma il problema nasce per il contenuto della 3 riga nella 3 colonna che contiene la virgola ed è inserito automaticamente nei doppi apici e quando avvio la funzione il risultato per quella riga sballa

    Come faccio a correggere la funzione che per quel determinato input possa avere un giusto output?

    Ovviamente ora sto risolvendo correggendo a mano il file e variando il delimitatore ma mi occorre che la funzione php lavori sul file originario e non quello modificato da me

    grazie mille a tutti


  • User Attivo

    ciao
    con l'explode o lo split non credo ci siano soluzioni. Hai possibilità di cambiare il formato del csv o è un file che ricevi così senza alcuna possibilità di cambiamento?


  • User Newbie

    Ciao speedcrash!

    Hai provato con la funzione str_getcsv()? Per esempio:

    [php]$csv = array_map('str_getcsv', file($file));
    print_r ($csv);[/php]

    mi dà come output quello che cerchi:

    Array
    (
        [0] => Array
            (
                [0] => prodotto
                [1] => codice
                [2] => quantita
                [3] => prezzo
            )
        [1] => Array
            (
                [0] => acqua
                [1] => mg33
                [2] => 4 litri
                [3] => 12
            )
        [2] => Array
            (
                [0] => colla
                [1] => k334
                [2] => 2,2 gr
                [3] => 15
            )
    )
    

    Ciao,
    Guido


  • User Attivo

    grazie mille
    ho provato questa funzione e devo dire che funziona!
    avevo inizialmente fatto delle correzioni a mano al file per risolvere inizialmente il problema.