Visualizzazione risultati 1 fino 6 di 6

Discussione: espressioni regolari... come indico lo spazio? (+ domande su eregi)

  1. #1
    L'avatar di skydrake
    skydrake non è connesso Utente
    Data registrazione
    22-04-2006
    Residenza
    Verona
    Messaggi
    218

    Predefinito espressioni regolari: nuovo problema

    se voglio con un espressione regolare prendere da
    $TESTO="pippo 18 pluto 40 ";
    il 18 e il 40 dopo una parola pensavo di creare un espressione tipo sequenza di lettere + spazio, inizia a leggere sequenza di numeri fino allo spazio.

    penso venga fuori qualcosa tipo...

    [a-z]+"SPAZIO"{1}([0-9]+)"SPAZIO"{1}

    (dove ovviamente "SPAZIO" è il carattere per lo spazio...)

    in teoria mettendo questa espressione in

    eregi("[a-z]+"SPAZIO"{1}([0-9]+)"SPAZIO"{1}",$TESTO,$TROVATE);

    mi aspetterei che mi sputasse fuori un array di 2 celle, con valori 18 e 40.

    gia che ci sono... che altri caratteri speciali ci sono per identificare gli a capo?
    e ce ne sono altri che non mi vengono in mente ora?

    ultima domanda... eregi restituisce un booeano... ma se io volessi sapere quanto è lungo l'array creato che devo fare?
    Ultima modifica di skydrake : 09-05-2006 alle ore 16.43.01

  2. #2
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Per quanto riguarda le espressioni regolari prova a leggere questo articolo.

    Per quanto riguarda l'array restituito (nel tuo caso $TROVATE) basta che usi la funzione count.
    Codice PHP:
    $numeroelementi=count($TROVATE);
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  3. #3
    Guest

    Predefinito

    Hai provato a lasciare vuoto semplicemente?

  4. #4
    L'avatar di skydrake
    skydrake non è connesso Utente
    Data registrazione
    22-04-2006
    Residenza
    Verona
    Messaggi
    218

    Predefinito espressioni regolari mica tanto regolari...

    con questa riga qui:
    eregi("[a-z]+:[[:space:]]?([0-9]+)", $TESTORISORSE[1], $RISORSA);
    con queste variabili:
    $TESTORISORSE[1]=="05-08 17:22:20 Metallo: 18517 Cristallo: 5215 Deuterio: 2666 Energia: 212 "

    mi da come risultato un vettore di 2 elementi,
    al cui primo posto compare 18517... come mi aspettavo
    al cui secondo posto è vuoto...
    e non legge i valori di cristallo, deuterio ed energia... dove è il problema?

  5. #5
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Ho unito le due discussioni visto che l'argomento è il medesimo.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  6. #6
    L'avatar di skydrake
    skydrake non è connesso Utente
    Data registrazione
    22-04-2006
    Residenza
    Verona
    Messaggi
    218

    Predefinito

    grazie mille... le avevo messe distinte perchè la prima la consideravo conclusa...

    ripeto l'ultima domanda:


    Citazione Originalmente inviato da skydrake
    con questa riga qui:
    eregi("[a-z]+:[[:space:]]?([0-9]+)", $TESTORISORSE[1], $RISORSA);
    con queste variabili:
    $TESTORISORSE[1]=="05-08 17:22:20 Metallo: 18517 Cristallo: 5215 Deuterio: 2666 Energia: 212 "

    mi da come risultato un vettore di 2 elementi,
    al cui primo posto compare 18517... come mi aspettavo
    al cui secondo posto è vuoto...
    e non legge i valori di cristallo, deuterio ed energia... dove è il problema?
    EDIT:
    ok, il problema l'ho capito... non avevo compreso bene le espressioni regolari... le parentesi in particolare. le tonde... ok dai...

    ora invece ho questo problema
    Codice PHP:
    echo "TESTO RISORSE DEL RAPPORTO: ***". $TESTORISORSE[1] . "***<br>";
    if (
    ereg(":.([0123456789]+).Cristallo:.([0123456789]+).Deuterio:.([0123456789]+)", $TESTORISORSE[1], $LETTO))
    echo
    "letto con successo <br><br>";
    $METALLO=$LETTO[1];
    $CRISTALLO=$LETTO[2];
    $DEUTERIO=$LETTO[3];
    } else {
    echo
    "ERRORE<br><br>";
    };
    mi stampa questo
    TESTO RISORSE DEL RAPPORTO: ***: 18517 Cristallo: 5215 Deuterio: 2666 Energia: 212 ***
    ERRORE
    Ultima modifica di seneca : 09-05-2006 alle ore 16.44.35 Motivo: skydrake, sai che non si può fare up!

Regole di scrittura

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