Menghuraikan Nilai Monetari Tidak Berformat dalam PHP
Apabila cuba menghuraikan nilai kewangan yang diwakili sebagai rentetan, seperti "75,25 €," ke dalam setara angka mereka, pergantungan pada hanya menggunakan kaedah parsefloat() mungkin tidak selalu mencukupi. Untuk menangani had ini dan memastikan fleksibiliti merentas lokasi dan format pemisah yang berbeza, penyelesaian yang lebih rumit diperlukan.
Penyelesaian ini memanfaatkan ungkapan biasa untuk mengekstrak nilai berangka dengan mengambil kira pelbagai pemisah dan format yang mungkin digunakan dalam jumlah kewangan. Memandangkan rentetan input, aksara yang tidak diperlukan mula-mula dialih keluar menggunakan preg_replace(). Operasi regex seterusnya mengenal pasti dan mengalih keluar pemisah dan ribuan pemisah, menghasilkan rentetan berangka.
Akhir sekali, rentetan yang dibersihkan tertakluk kepada operasi str_replace() standard untuk menyatukan pemisah perpuluhan sebagai tempoh sebelum menghantar ke apungan menggunakan (terapung). Pendekatan komprehensif ini mengendalikan kedua-dua titik dan koma sebagai pemisah perpuluhan, memastikan penghuraian yang tepat tanpa mengira tempat.
Berikut ialah contoh untuk menggambarkan proses:
<?php 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); }
Dengan pendekatan ini, anda boleh yakin menghuraikan rentetan monetari yang tidak diformat, mendapatkan nilai angka yang boleh dipercayai tanpa mengira bahasa dan konvensyen pemformatan.
Atas ialah kandungan terperinci Bagaimana Menghuraikan Nilai Monetari Tidak Berformat dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!