Visualizzazione risultati 1 fino 7 di 7

Discussione: Eliminare tutti gli spazi in una riga

  1. #1
    meteomarconia non è connesso Neofita
    Data registrazione
    10-01-2010
    Messaggi
    25

    Predefinito Eliminare tutti gli spazi in una riga

    Salve,
    ho la necessità di eliminare tutti gli spazi in una riga e sostituirli con un solo ";"
    gli spazi possono variare tra un valore e l' altro in funzione dei dati.
    sto usando questo script ma non funziona

    Codice PHP:
    <?php
    $file2
    = ('dati.txt');
    $file_txt2 = file($file2);
    $str2 = str_replace(" ", ";", $file_txt2); // converto gli spazi in un solo ;
    $n2 = count($str2) - 1; // leggo l' ultima riga
    $valore1 = explode(';',$str25[$n2]); //divide la riga
    ?>

    <?php echo $valore1[0]?>// leggo i valori che mi servono
    <?php echo $valore1[1]?> n.........
    il file dati.txt è così composto
    (con ---- ho indicato gli spazi )

    23/09/10___19.25___10.1___10.7___10.1___84 ( colonne con 3 spazi ___)
    23/09/10___19.28____9.6___ 10.1____9.6___86 ( colonne con 4 spazi ____ )
    grazie in anticipo per la collaborazione.
    Ultima modifica di andreafallico : 24-09-2010 alle ore 22.35.04

  2. #2
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Credo che l'errore sia qui:
    Codice PHP:
    explode(';',$str25[$n2]);
    La variabile $str25 non è definitia invece $str2 lo è.
    Comunque con:
    Codice PHP:
    str_replace(" ", ";", $file_txt2);
    n spazi vengono convertiti in n punti e virgola, se invece vuoi convertire più spazi in un solo punto e virgola puoi usare preg_replace:
    Codice PHP:
    preg_replace("/\s+/", ";", $file_txt2);
    -
    Comunque se ho capito bene quello che vuoi fare, puoi anche evitare di fare tanti passaggi e usare preg_split invece di preg_replace + explode:
    Codice PHP:
    $file = file('dati.txt');
    $riga = end($file);
    $valore = preg_split('/\s+/', $riga);

    echo
    $valore[0];

    echo
    $valore[1];
    Ultima modifica di javascripter : 24-09-2010 alle ore 20.57.50

  3. #3
    meteomarconia non è connesso Neofita
    Data registrazione
    10-01-2010
    Messaggi
    25

    Predefinito

    Ciao javascript, grazie per l' aiuto che mi dai,
    allora $str25 è stato un mio errore nel trasciverlo nel post ,
    ho fatto le seguenti modifiche come da te consigliato

    Codice PHP:
    $file_txt2 = file($file2);
    $str2 = preg_replace("/\s+/", ";", $file_txt2); // converto gli spazi in un solo ;
    $n2 = count($str2) - 1; // leggo l' ultima riga
    $valore1 = explode(';',$str2[$n2]); //divide la riga
    ho come risultatoquesto errore
    Warning: file() [function.file]: Filename cannot be empty in /web/htdocs/www.xxxxxxxxxxxxxx/01.php on line 16

    che corrisponde alla riga con pre_replace.
    Ultima modifica di andreafallico : 24-09-2010 alle ore 22.35.33

  4. #4
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Codice PHP:
    $file_txt2 = file($file2);
    $file2 hai dimenticato di dichiararla?
    Ultima modifica di javascripter : 24-09-2010 alle ore 21.20.19

  5. #5
    meteomarconia non è connesso Neofita
    Data registrazione
    10-01-2010
    Messaggi
    25

    Predefinito

    ok funziona
    grazie sei stato molto gentile a darmi una mano.

    solo un' altra domanda
    che differenza c'è tra questi due parametri ?

    '/\s\s+/'

    e

    "/\s+/"

  6. #6
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Il primo cerca uno o più spazi seguiti almeno da uno spazio, l'altro cerca uno o più spazi e basta.

    In questo caso possiamo dire che la differenza è pressocché minima e quindi sarebbe più semplice usare "/\s+/"

  7. #7
    meteomarconia non è connesso Neofita
    Data registrazione
    10-01-2010
    Messaggi
    25

    Predefinito

    ok grazie
    sei stato molto gentile.

Regole di scrittura

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