Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: $_POST e is_int()

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    75

    $_POST e is_int()

    Ciao a tutti ,

    ho la necessità di controllare se una variabile $_POST che digita l'utente in un form sia un numero o un testo. Chiaramente, chiamando la variabile a, $_POST['a'] è una stringa quindi non posso fare is_int($_POST['a']) in quanto mi ritornerebbe sempre falso.

    Qual'è la strada migliore per effettuare questo controllo? Leggevo in una guida in inglese che forse la scelta migliore è usare filter_input confermate?


    Grazie

  2. #2
    Utente di HTML.it L'avatar di hyde82
    Registrato dal
    Feb 2010
    Messaggi
    243
    appunto...è ovvio che se ti restituisce falso vorrà dire che non sarà un intero...viceversa(true) lo sarà....

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    356
    c'è la funzione is_numeric() che controlla se una variabile è un numero o no e ritorna un valore booleano vero se lo è, falso se non lo è.

    Una volta appurato che è un numero, se deve essere necessariamente un intero, puoi fare un cast a float, ricavarti la parte decimale e controllare che sia pari a zero.
    Jekkil

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    75
    appunto...è ovvio che se ti restituisce falso vorrà dire che non sarà un intero...viceversa(true) lo sarà....
    Forse non mi sono spiegato bene io. Quello che l'utente digita nella casella di testo è un testo. Però io voglio assicurarmi che abbia inserito un numero. Quindi la stringa "12" è valida, la stringa "ciao" no.


    c'è la funzione is_numeric() che controlla se una variabile è un numero o no e ritorna un valore booleano vero se lo è, falso se non lo è. Una volta appurato che è un numero, se deve essere necessariamente un intero, puoi fare un cast a float, ricavarti la parte decimale e controllare che sia pari a zero.
    is_numeric() sembrerebbe fare a caso mio. Non mi ricordo dove ma mi sembra di aver letto che ha dei limiti. E' possibile o ricordo male io?

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    356
    qui c'è la documentazione di is_numeric()

    http://php.net/manual/en/function.is-numeric.php

    non mi sembra parli di limitazioni...che tipo di limitazioni intendi?
    Jekkil

  6. #6
    Utente di HTML.it L'avatar di hyde82
    Registrato dal
    Feb 2010
    Messaggi
    243
    si,infatti se l'utente digitasse "1e6" is_numeric la valuterebbe numerica .....

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    356
    che ne dici allora di una bella espressione regolare? per vedere se la stringa è formata solo da numeri? poi, nel caso, la trasformi in intero.

    Mi sembra una buona soluzione no?
    Jekkil

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    75
    Mi definiresti "espressione regolare"? Come avrai capito non sono proprio un master della programmazione

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    356
    Da Wikipedia: "Le espressioni regolari (in inglese regular expression o, in forma abbreviata, regexp, regex o RE) sono sintassi attraverso le quali si possono rappresentare insiemi di stringhe" --> http://it.wikipedia.org/wiki/Espressione_regolare

    in parole povere sono uno strumento che ti permette di verificare che una stringa sia fatta in un determinato modo. Per esempio puoi controllare che una stringa sia fatta da 5 caratteri, o solo da numeri, o da numeri separati da un trattino e così via.

    puoi anche dare un'occhiata qui: http://programmazione.html.it/guide/...ioni-regolari/

    Ti faccio alcuni esempi:
    per controllare che una stringa sia formata da soli caratteri minuscoli e abbia almeno un carattere:
    Codice PHP:
    preg_match('/^[a-z]+$/',$stringa_da_analizzare,$tmp); 
    per controlla che una stringa sia formata da soli caratteri (sia maiuscoli che minuscoli) e sia lunga massimo 3 caratteri:
    Codice PHP:
    preg_match('/^[a-z]{1,3}$/i',$stringa_da_analizzare,$tmp); 
    infine veniamo a quello che serve a te:

    per controllare che una stringa sia formata solo da numeri e abbia almeno una cifra:
    Codice PHP:
    preg_match('/^[0-9]+$/',$stringa_da_analizzare,$tmp); 
    la funzione preg_match ritorna il numero di occorrenze trovate dell pattern e te le mette nell'array $tmp.

    Quindi nel tuo caso, se la stringa è fatta di soli numeri, il valore di ritorno sarà 1, altrimenti 0.
    Jekkil

  10. #10
    Originariamente inviato da slang6
    Mi definiresti "espressione regolare"? Come avrai capito non sono proprio un master della programmazione

    Codice PHP:

    $post 
    "1e6";

    if(
    preg_match('/^\\\d+$/',$post)) //<--- espressione regolare
     
    echo "è un numero";
    else
     echo 
    "non è un numero"
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

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.