Navigazione

    Privacy - Termini e condizioni
    © 2020 Search On Media Group S.r.l.
    • Registrati
    • Accedi
    • CATEGORIES
    • Discussioni
    • Non letti
    • Recenti
    • Hashtags
    • Popolare
    • Utenti
    • Stream
    • Interest
    • Categories
    1. Home
    2. Categorie
    3. Coding e Sistemistica
    4. Coding
    5. [Risolto] Trasformare un file .txt in un array di array
    Questa discussione è stata cancellata. Solo gli utenti con diritti di gestione possono vederla.
    • marcocarrieri
      marcocarrieri ModSenior • ultima modifica di

      Le righe hanno lo stesso carattere delimitatore dei valori presenti sulle righe?

      0 Miglior Risposta Ringrazia Cita Rispondi

        1 Risposta Ultima Risposta
      • M
        mentelibera User Attivo • ultima modifica di

        Sì, ci sono solo due delimitatori nel file:

        1. Quello di fine linea, suppongo '\n' essendo comune sia per quelli scritti con Linux ('\n') che con Windows ('\r\n');
        2. All'interno di una stessa riga l'altro separatore tra gli elementi è '/'

        Mi scuso per l'eventuale imprecisazione.

        0 Miglior Risposta Ringrazia Cita Rispondi

          1 Risposta Ultima Risposta
        • marcocarrieri
          marcocarrieri ModSenior • ultima modifica di

          Bene e l'eventuale utilizzo di questi array?
          Tipo un ciclo per scrivere la prima riga contentie queste parole... la seconda queste.... ecc?

          0 Miglior Risposta Ringrazia Cita Rispondi

            1 Risposta Ultima Risposta
          • M
            mentelibera User Attivo • ultima modifica di

            Esatto, mi piacerebbe ricavare i singoli elementi disponendoli ordinatamente, e magari anche le singole dimensioni degli array annidati, per esempio il 5.o del primo post (riporto per comodità, "4" => array("a","d","e")) dovrebbe riportare 3.

            Grazie.

            0 Miglior Risposta Ringrazia Cita Rispondi

              1 Risposta Ultima Risposta
            • marcocarrieri
              marcocarrieri ModSenior • ultima modifica di

              Ok... un po di analisi...
              E vedo ok... 🙂 ?
              E se la dimensione fosse calcolata non a priori, ma mentre splitti andrebbe bene lo stesso?

              0 Miglior Risposta Ringrazia Cita Rispondi

                1 Risposta Ultima Risposta
              • M
                mentelibera User Attivo • ultima modifica di

                Sì, va benissimo anche il calcolo della dimensione in un momento successivo.

                Prenditi tutto il tempo di cui hai bisogno, anch'io sto facendo delle ricerche online...

                0 Miglior Risposta Ringrazia Cita Rispondi

                  1 Risposta Ultima Risposta
                • M
                  mentelibera User Attivo • ultima modifica di

                  Non ho avuto modo di provare il codice qui sotto, ma mi è venuta in mente questa possibile soluzione almeno per trasferire i dati dal file all'array di array che consiste nel rimuovere la riga con il solo slash in fase di lettura.
                  Ecco il prototipo:

                  [php]
                  // Legge il file e rimuove l'elemento inutile
                  $contenuto_file = file_get_contents("elenco.txt");
                  $contenuto_file = str_replace('/\n', '', $contenuto_file); // per file testuali Linux
                  $contenuto_file = str_replace('/\r\n', '', $contenuto_file); // per file testuali Windows

                  // Inserisce nell'array le righe del file e poi crea quelli annidati
                  $array = explode('\n', $contenuto_file);
                  $array = explode('/', $array);
                  [/php]Per le altre operazioni non saprei come procedere. :gtsad:

                  0 Miglior Risposta Ringrazia Cita Rispondi

                    1 Risposta Ultima Risposta
                  • marcocarrieri
                    marcocarrieri ModSenior • ultima modifica di

                    Una cosa cosi può andare bene come inizio?

                    [php]
                    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
                    <html xmlns="http://www.w3.org/1999/xhtml">
                    <head>
                    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
                    <title>Analisi testo</title>
                    <style type="text/css">
                    html,body
                    {
                    margin:0px;
                    padding:0px;
                    background:#AAD4FF;
                    }
                    </style>
                    </head>
                    <body>
                    <?php
                    $percorsoFile="testo.txt";
                    $contenuto_file=file_get_contents($percorsoFile);
                    $righe=split("\n",$contenuto_file);
                    $numerorighe=count($righe);
                    echo "Il file contiene $numerorighe righe.<br />";
                    $numeroriga=0;
                    foreach($righe as &$riga)
                    {
                    $numeroriga=$numeroriga+1;
                    $elementi=explode("/",$riga);
                    $numeroElementi=count($elementi)-1;
                    echo "La riga numero $numeroriga contiene $numeroElementi elementi<br />";
                    $numeroElemento=0;
                    foreach($elementi as &$elementoriga)
                    {
                    $numeroElemento=$numeroElemento+1;
                    if($numeroElemento>1)
                    {
                    echo "==>$elementoriga<==<br />";
                    }
                    }
                    }
                    ?>
                    </body>
                    </html>
                    [/php]

                    0 Miglior Risposta Ringrazia Cita Rispondi

                      1 Risposta Ultima Risposta
                    • M
                      mentelibera User Attivo • ultima modifica di

                      Mi sembra buono ma non ho capito una cosa, perché nei foreach(){ } metti come argomento un reference anziché il nome della variabile, in sostanza non dovrebbe essere, per esempio:

                      foreach($righe as $riga){/.../}

                      Grazie.

                      0 Miglior Risposta Ringrazia Cita Rispondi

                        1 Risposta Ultima Risposta
                      • marcocarrieri
                        marcocarrieri ModSenior • ultima modifica di

                        Beh, nel php sono solo dilettante, però ho visto che la sintassi data sembra essere quella.

                        php.net/manual/en/control-structures.foreach.php

                        0 Miglior Risposta Ringrazia Cita Rispondi

                          1 Risposta Ultima Risposta
                        • M
                          mentelibera User Attivo • ultima modifica di

                          Generalmente ad una variabile viene esplicitato il reference nel parametro formale della funzione quando questa ne cambierà il contenuto. In questo caso non c'era alcun problema 🙂

                          Stavo facendo una prova e mi sembra che ci sia un problema poiché prende in considerazione pure la riga con il solo slash che invece non dovrebbe prendere.

                          Ho messo temporaneamente sul mio sito l'effetto a questo riferimento che poi rimuoverò:
                          w w w.cervia.name/esperimento1.php
                          il file di testo è qui:
                          w w w.cervia.name/testo.txt

                          Grazie, ciao.

                          0 Miglior Risposta Ringrazia Cita Rispondi

                            1 Risposta Ultima Risposta
                          • marcocarrieri
                            marcocarrieri ModSenior • ultima modifica di

                            Beh puoi sempre fare un trim dell'elemento e se quest'ultimo è uguale alla stringa vuota allora non stamparlo, non considerarlo.

                            0 Miglior Risposta Ringrazia Cita Rispondi

                              1 Risposta Ultima Risposta
                            • M
                              mentelibera User Attivo • ultima modifica di

                              Giusta osservazione.
                              Visto che il problema è stato risolto mi accingo a:

                              1. sostituire i link del mio post precedente con "...omissis...";
                              2. mettere "Risolto" al titolo del primo post.

                              Grazie, :gthi:

                              <addendum>
                              Contrordine, mi accorgo solo ora che non è più possibile modificare i post precedenti nonostante la buona intenzione...
                              </addendum>

                              0 Miglior Risposta Ringrazia Cita Rispondi

                                1 Risposta Ultima Risposta
                              • marcocarrieri
                                marcocarrieri ModSenior • ultima modifica di

                                E' lo si può fare entro 30 minuti...
                                Ora vedo se chi ha il potere lo può fare. 🙂

                                0 Miglior Risposta Ringrazia Cita Rispondi

                                  1 Risposta Ultima Risposta
                                Caricamento altri post
                                Rispondi
                                • Topic risposta
                                Effettua l'accesso per rispondere
                                • Da Vecchi a Nuovi
                                • Da Nuovi a Vecchi
                                • Più Voti