Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana Menghuraikan Nilai Monetari dengan Ketepatan dalam PHP: Pendekatan Sedar Penyetempatan?

Bagaimana Menghuraikan Nilai Monetari dengan Ketepatan dalam PHP: Pendekatan Sedar Penyetempatan?

Susan Sarandon
Lepaskan: 2024-11-13 17:11:02
asal
355 orang telah melayarinya

How to Parse Monetary Values with Precision in PHP: A Localization-Aware Approach?

Menghuraikan Nilai Monetari dengan Ketepatan dalam PHP

Menghuraikan data kewangan dengan pelbagai format boleh menjadi satu cabaran, terutamanya apabila mempertimbangkan pemisah khusus setempat. Isu ini timbul apabila cuba menukar perwakilan rentetan wang, seperti "75,25 €", kepada nilai titik terapung.

Walaupun pendekatan biasa melibatkan penggunaan parsefloat() selepas menggantikan koma dengan titik, ia gagal apabila berurusan dengan tempat yang menggunakan koma sebagai pemisah perpuluhan. Untuk menangani had ini, penyelesaian yang lebih komprehensif diperlukan.

Penyelesaian Penyetempatan-Sedar

Penyelesaian yang dicadangkan menangani keperluan untuk kesedaran penyetempatan dengan bergantung pada ungkapan biasa untuk ekstrak nilai berangka daripada rentetan input. Ia mengendalikan kedua-dua koma dan titik secara berkesan sebagai pemisah perpuluhan, mengekalkan perwakilan yang betul tanpa mengira tempat.

public function getAmount($money)
{
    $cleanString = preg_replace('/([^0-9\.,])/i', '', $money);
    $onlyNumbersString = preg_replace('/([^0-9])/i', '', $money);

    $separatorsCountToBeErased = strlen($cleanString) - strlen($onlyNumbersString) - 1;

    $stringWithCommaOrDot = preg_replace('/([,\.])/', '', $cleanString, $separatorsCountToBeErased);
    $removedThousandSeparator = preg_replace('/(\.|,)(?=[0-9]{3,}$)/', '',  $stringWithCommaOrDot);

    return (float) str_replace(',', '.', $removedThousandSeparator);
}
Salin selepas log masuk

Menguji Penyelesaian

Untuk mengesahkan keberkesanannya, penyelesaian telah diuji dengan pelbagai format input, termasuk:

['1,10 USD', 1.10],
['1 000 000.00', 1000000.0],
[' 000 000.21', 1000000.21],
['£1.10', 1.10],
['3 456 789', 123456789.0],
['3,456,789.12', 123456789.12],
['3 456 789,12', 123456789.12],
['1.10', 1.1],
[',,,,.10', .1],
['1.000', 1000.0],
['1,000', 1000.0]
Salin selepas log masuk

Hasilnya menunjukkan keupayaan penyelesaian untuk mengekstrak nilai titik terapung dengan tepat, tanpa mengira format input.

Penghadan dan Sumber

Walaupun penyelesaiannya cemerlang dalam mengendalikan pelbagai tempat, ia mempunyai had mengenai perpuluhan dengan lebih daripada dua digit. Pangkalan kod tersedia di https://github.com/mcuadros/currency-detector, menyediakan pelaksanaan praktikal untuk menghuraikan nilai kewangan dalam pelbagai tempat.

Atas ialah kandungan terperinci Bagaimana Menghuraikan Nilai Monetari dengan Ketepatan dalam PHP: Pendekatan Sedar Penyetempatan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan