Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    PROBLEMA con funzione php explode o split 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
    Ultima modifica di Alhazred; 07-04-2016 a 13:59

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    explode() e split() non possono essere "corrette", perché è così che funzionano, se vuoi seguire un tuo pattern devi usare un'espressione regolare appositamente scritta ed usarla con preg_split().

    P.S. quando fai copia/incolla di un messaggio preso da un altro sito, controlla cosa incolli, ti eri portato dietro un po' di link dall'altro sito su cui hai chiesto.

  3. #3
    Alhazred scusami degli errori.

    grazie mille della dritta sul preg_split()
    provo a vedere come posso usare questa funzione ed adattarla per il mio uso

    Complimenti per il forum...la sezione php la vedo davvero attiva!

  4. #4
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,359
    Se puo' aiutare...


    Codice PHP:
    <?php 
    function my_replace($stringa) {
      
    $pippo     "azertyuiop===dddd";
      
    $pattern   '/"([^,]+)[,]([^"]+)"/';
      
    $risultato preg_replace($pattern,"\\1$pippo\\2",$stringa);
      
    $array     explode(",",$risultato);
     
      return 
    str_replace($pippo,",",$array);
    // function my_replace($stringa)
    $x        'colla,k334,"2,2 gr",15,"01234, 0003",89,"ui,io"';
    $mioArray my_replace($x);
    var_dump($mioArray);
    ?>
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  5. #5

  6. #6
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,359
    Quote Originariamente inviata da k.b Visualizza il messaggio
    Usa questa funzione: http://php.net/str_getcsv
    Non la conoscevo. Ci sono talmente tante funzioni che è difficile conoscerle tutte :-(
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  7. #7

  8. #8
    Wow ragazzi siete davvero fantistici! Non ho mai trovato un supporto cosi efficiente!

  9. #9
    Wow ragazzi siete davvero fantistici! Non ho mai trovato un supporto cosi efficiente!

  10. #10
    Quote Originariamente inviata da badaze Visualizza il messaggio
    Se puo' aiutare...


    Codice PHP:
    <?php 
    function my_replace($stringa) {
      
    $pippo     "azertyuiop===dddd";
      
    $pattern   '/"([^,]+)[,]([^"]+)"/';
      
    $risultato preg_replace($pattern,"\\1$pippo\\2",$stringa);
      
    $array     explode(",",$risultato);
     
      return 
    str_replace($pippo,",",$array);
    // function my_replace($stringa)
    $x        'colla,k334,"2,2 gr",15,"01234, 0003",89,"ui,io"';
    $mioArray my_replace($x);
    var_dump($mioArray);
    ?>
    Sapete dove posso trovare delle guide per creare dei pattern ad hoc?
    come questo: /"([^,]+)[,]([^"]+)"/
    che ha fatto +badaze
    vorrei avere delle basi per crearli da soli con i delimitatori che mi occorrono.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.