Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di Aires
    Registrato dal
    Jan 2010
    Messaggi
    725

    Controllo su campo con espressione regolare.

    Ciao a tutti, avrei dei problemi con un'espressione regolare, purtroppo è un argomento che non mastico proprio, ho provato a studiarmi varie guide ma i risultati sono stati limitati

    In questo caso sto lavorando su un file php che legge un file txt e ne estrae dei campi, i campi sono spesso ripetuti.

    Tramite delle operazioni divido il testo in varie parti e le varie parti le suddivido con strtok.
    Quindi mi ritrovo a lavorare sui singoli token.

    Esempio:
    Stringa di base:
    Ciao come stai / Totale 30,00 / BU / Totale Costi 20,00

    Stringa suddivisa con strtok
    Ciao come stai
    Totale 30,00
    BU
    Totale Costi 20,00

    Quel che mi interessa è riuscire a scoprire se dopo Totale ci sia una stringa numerica o testuale. In modo che lui analizzi questi campi:

    Totale 30,00
    Totale Costi 20,00

    E mi segnali nel caso trova totale costi, quindi una cosa del genere

    Codice PHP:
    If(substr($tok,0,6)=='Totale'){   // Qui controllo che la stringa inizi per totale
     
    ---- qua devo fare l'if che mi permetta di controllare se dopo totale ci sono numeri o lettere --    
    istr 1
    }else{
    istr2


    Riassumendo avrei bisogno di un aiuto su come realizzare un If che mi controlli se dopo Totale c'è una stringa testuale o numerica.
    Grazie a tutti
    Originariamente inviato da qazar
    Se finisci di leggere il thread mi sono corretto,è solo i kernel scritto in html.
    Originariamente inviato da rnlflame
    Comunque non dovevano crollare

  2. #2
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    quindi abbiamo che il tuo $tok = 'Totale 30,00';
    Passalo anche attraverso il trim() se ti aspetti spazi prima/dopo

    e possiamo fare:

    Codice PHP:
    $quellochevienedoposubstr($tok7); //prendo tutto quello che viene dopo il settimo carattere.
    if(preg_match('/^[\\d\\.,]*$/',$quellochevienedopo)){//mi aspetto il punto o la virgola come separatore
            
    echo 'numero';
    }elseif(
    preg_match('/^[\\da-z,]*$/i',$quellochevienedopo)){
            echo 
    'numero e lettere';
    }else{
            echo 
    'tutto dentro';

    .. etc
    puoi gestire qualsiasi altra cosa in questo modo, tipo se cerchi spazi, o altre cose. Ovviamente puoi saltare il case numero e lettere, se ti interessa sapere solo se e' numero o no

  3. #3
    Utente di HTML.it L'avatar di Aires
    Registrato dal
    Jan 2010
    Messaggi
    725
    Grazie infinite, ora testo un po =)
    Originariamente inviato da qazar
    Se finisci di leggere il thread mi sono corretto,è solo i kernel scritto in html.
    Originariamente inviato da rnlflame
    Comunque non dovevano crollare

  4. #4
    Utente di HTML.it L'avatar di Aires
    Registrato dal
    Jan 2010
    Messaggi
    725
    Mi son dimenticato di una cosa, mi puoi dire come fare per via che tra le lettere comprenda il - in modo che valgano i numeri negativi ^^

    Edit: Scusate doppio post volevo aggiungere al primo che avevo la finestra aperta ma ho sbagliato
    Originariamente inviato da qazar
    Se finisci di leggere il thread mi sono corretto,è solo i kernel scritto in html.
    Originariamente inviato da rnlflame
    Comunque non dovevano crollare

  5. #5
    Utente di HTML.it L'avatar di Aires
    Registrato dal
    Jan 2010
    Messaggi
    725
    Up!


    Mi sono accorto che nella prima parte mi serve riconosca se c'è una parte numerica perchè potrebbe essere scritto Totale costi,noleggi,etc. oppure totale costi.
    Quindi cercare solo il separatore non funge in questo caso

  6. #6
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    prova con /\s-?\d+([,\.]\d*)?$/

    dovrebbe matcharti anche roba tipo 'blalbla bla -45,22' , basta che il numero sia l'ultima cosa nella stringa, e che abbia uno spazio prima

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.