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.
    • 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