Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Espressione regolare e numeri decimali

    Un saluto a tutti.
    Ancora una volta ho un problema relativo alle espressioni regolari. In una casella di testo vengono accettati numeri decimali, con virgola o punto. Ho utilizzato l'espressione (trovata sul sito regexlib):

    Codice PHP:
    $quantita=ereg("^\d*[0-9](|.\d*[0-9]|,\d*[0-9])?$"$quantita); 
    con \ prima di d.

    Purtroppo però mi da errore REG_EMPTY.

    L'unico modo per far passare il valore è utilizzare il punto utilizzando l'espressione:

    Codice PHP:
    $quantita=ereg("^[+-]?[0-9]*\.?[0-9]+$"$quantita); 
    Inoltre, oltre ad accettare la virgola (o il punto), dovrei subito convertire il numero decimale con il punto utilizzando:
    Codice PHP:
    $quantita=str_replace("," ,"." $quantita
    poichè devo poi effettuare dei calcoli con questo valore.

    Avete suggerimenti o soluzioni da darmi?

    Vi ringrazio anticipatamente...

  2. #2
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    $quantita=ereg("^[0-9]+([\.,]{1}[0-9]+)?$", $quantita);

    E tieni presente che ereg usa le regex posix che in php sono deprecate, devi usare le pcre (preg_* ). Ti da reg empty proprio perche' \d e' un character class di pcre, non di posix (in posix sarebbe [:digit:]

  3. #3
    Ok intanto grazie tante. Quindi come devo utilizzare l'espressione dentro la ereg con preg? preg non l'ho mai utilizzata...

  4. #4
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    preg_match("/^\d+([\.,]{1}\d+)?$/", $quantita);

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.