Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027

    [REGEX] Separazione usando gli spazi (quando non sono tra apici)

    Ciao, come da titolo, mi servirebbe una regex che divida questa stringa:

    codice:
    ciao prova "prova con spazi" prot
    in 4 elementi:
    codice:
    Array (
          [0]=> ciao
          [1]=> prova
          [2]=> prova con spazi      
          [3]=> prot
            )
    Potete aiutarmi? sono un po' imbranato con le regex...

    grazie, ciao

  2. #2
    Ciao, prova questo codice:

    codice:
    $t = 'ciao prova "prova, con spazi" prot, e "seconda prova, con spazi" prot ';
    preg_match_all('/".*?"|\b\w+\b/s',$t,$mth);
    print_r($mth[0]);


    EDIT:
    avevo dimenticato di escludere le virgolette:

    codice:
    $t = 'ciao prova "prova, con spazi" prot, e "seconda prova, con spazi" prot ';
    preg_match_all('/(?<=").*?(?=")|\b\w+\b/s',$t,$mth);
    print_r($mth[0]);
    dA .. foto di viaggio
    L'esperienza č il tipo di insegnante pių difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

  3. #3
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    letta solo oggi, grazie mille!

  4. #4
    Originariamente inviato da gianiaz
    letta solo oggi, grazie mille!
    mmm riguardando oggi la seconda soluzione che ti ho postato non funziona :master: Ora vedo se riesco ad aggiustarla.
    dA .. foto di viaggio
    L'esperienza č il tipo di insegnante pių difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

  5. #5
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    al momento non ho avuto modo di testarla approfonditamente, l'esempio che mi hai postato mi č sembrato che non avesse problemi...

  6. #6
    Originariamente inviato da gianiaz
    al momento non ho avuto modo di testarla approfonditamente, l'esempio che mi hai postato mi č sembrato che non avesse problemi...
    ecco il risultato del secondo script:

    codice:
    Array
    (
        [0] => ciao
        [1] => prova
        [2] => prova, con spazi
        [3] =>  prot, e 
        [4] => seconda prova, con spazi
        [5] => prot
    )
    in realtā il quarto elemento č sbagliato perche lo considera come tra virgolette, e al momento non riesco a sistemare la regexp quindi ho aggiustato cosė, aggiungendo un ciclo for:

    codice:
    preg_match_all('/"(.*?)"|(\b\w+\b)/s',$t,$mth);
    for($i=0,$c=count($mth[0]);$i<$c;$i++)
    $match[]=($mth[1][$i]!='')?$mth[1][$i]:$mth[2][$i];
    print_r($match);
    dA .. foto di viaggio
    L'esperienza č il tipo di insegnante pių difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

  7. #7
    Ok, forse sono arrivato ad una soluzione:

    codice:
    preg_match_all('/(")?((?(1).*?|\w+))(?(1)\\1)/s',$t,$mth);
    print_r($mth[2]);
    dA .. foto di viaggio
    L'esperienza č il tipo di insegnante pių difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

  8. #8
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    grazie davvero dello sbattimento, perō c'č ancora un problemino:

    codice:
    ciao prova "prova, con spazi" prot, e "seconda prova, con spazi" prot
    
    Array
    (
        [0] => ciao
        [1] => prova
        [2] => prova, con spazi
        [3] => prot
        [4] => e
        [5] => seconda prova, con spazi
        [6] => prot
    )
    mi toglie la virgola dopo prot.

    č un problema con il carattere o tronca l'ultimo di ognuno ? (spero di no).

    ciao

  9. #9
    Originariamente inviato da gianiaz
    grazie davvero dello sbattimento, perō c'č ancora un problemino:
    [...]
    mi toglie la virgola dopo prot.

    č un problema con il carattere o tronca l'ultimo di ognuno ? (spero di no).

    ciao
    Per lo sbattimento era una questione di principio
    Per quanto riguarda la virgola, succede perchč pensavo ti interessasse ottenere solo il testo e non la puteggiatura. La regexp estrae solo le parole singole, escludendo il resto, o le stringhe quotate, includendo tutto.
    dA .. foto di viaggio
    L'esperienza č il tipo di insegnante pių difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

  10. #10
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    va benissimo anche cosi, volevo capire se la mancanza della virgola potesse creare altri problemi.

    grazie mille, ciao

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