Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2016
    Messaggi
    2

    Regular Expression for currency number format replacement

    Salve a tutti!

    Nel processo di visualizzazione formato numeri di valuta dal file di testo, stavo usando la sotto riportata espressione regolare che accetta una stringa come '12 .345,67'. Dovrebbe essere ok per adattarsi a qualsiasi numero arbitrario di tre (o meno) cifre consecutive separate da punto prima che la virgola come separatore decimale venga incontrata.

    Regular Expression : $_num = preg_replace('/^([0-9]{1,3}\.([0-9]{3}\.)*[0-9]{3}|[0-9]+)(?|,(\d\d))$/', '${1}.${3}', $num)

    Qualcuno potrebbe aiutarmi a modificare la mia espressione regolare in modo da "scartare" il punto?


    Per completezza il mio esempio ritorna '12.345.67' in quanto l'espressione regolare "comprende" il punto come separatore di migliaia come accennato nella prima parte della espressione regolare riportata.

    Come risultato finale vorrei ottenere la suguente stringa: '12345.67'.

    Molte grazie in anticipo per l'aiuto.


    Tezuya.

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Visto che devi solo eliminare il punto, non è più facile usare str_replace('.','',$num) ?

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2016
    Messaggi
    2

    RE: Regular Expression for currency number format replacement

    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Visto che devi solo eliminare il punto, non è più facile usare str_replace('.','',$num) ?
    Grazie per la dritta Alhazred.

    Credo che probabilmente sia più corretto guardare il problema da un'altra angolazione.

    Infatti nel mio caso specifico, ipotizzando un locale come ad es. it_IT, posso usare se è attivo "intl" in php.ini NumberFormatter:: Parse visto che la stringa di input nel mio caso in è formato decimale italiano.

    http://php.net/manual/en/numberformatter.parse.php

    Codice PHP:
    $num '4.335,67'$fmt numfmt_create'it_IT'NumberFormatter::DECIMAL ); echo $fmt->parse($num); 

    Qui sopra riporto l'esempio completo simile alla soluzione desiderata.

    Cordialmente.

Tag per questa discussione

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.