Visualizzazione risultati 1 fino 3 di 3

Discussione: Splittare righe con separatore multispazio.

  1. #1
    phollia non è connesso Utente giovane
    Data registrazione
    05-02-2015
    Messaggi
    68

    Predefinito Splittare righe con separatore multispazio.

    Mi trovo davanti una problematica.

    Ho un file (.txt) del tipo

    Codice:
    testo1          testo2          testo3 ...
    altrotesto      altrotesto      altrotesto ...
    ancoratesto     ancoratesto     ancoratesto ...
    ...
    A prima vista sembrerebbe che i campi sono separati da tabulazione, ma nella realtà ho scoperto (amaramente) che separati da diversi spazi, tanti quanti ne occorrono ad incolonnare i testi.
    Naturalmente, usando come delimitatore il TAB, o lo spazio non ottengo nulla.

    Qualche suggerimento su come splittare le righe?

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,067

    Predefinito

    Se vuoi convertire i vari spazi in uno soltanto:
    Codice PHP:
    echo preg_replace("/\s+/", " ", $stringa);
    Ciao!

  3. #3
    phollia non è connesso Utente giovane
    Data registrazione
    05-02-2015
    Messaggi
    68

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Se vuoi convertire i vari spazi in uno soltanto:
    Codice PHP:
    echo preg_replace("/\s+/", " ", $stringa);
    Ciao!
    Così però tornando semplicemente ad uno spazio rischi di perdere informazioni e/o avere altri intoppi.

    Se può interessare ho risolto così

    Codice PHP:
    <?php
    //Definisco un pattern costituito da 2 o più spazi
    $p = "/\s{2,}/";

    //Apro il file in un array
    $lines = file('miofile.csv');

    //Per ogni riga ...
    foreach( $lines as $line ) {
    //Sostituisco gli spazi multipli con la tabulazione
    $line = preg_replace( $p, "\t", $line );

    //Esplodo ogni riga in array per poter lavorare sui campi
    $data = explode( "\t", $line );
    $num = count($data);

    for(
    $c = 0; $c < $num; $c++ ) {
    // Lavorazione su righe/campi o salvataggio in nuovo file
    }

    }
    ?>
    Ultima modifica di phollia : 18-06-2018 alle ore 15.02.47

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •