Jika saya memiliki nilai berikut:
$var1 = AR3,373.31
$var2 = 12.322,11T
Bagaimana saya bisa membuat variabel baru dan mengaturnya ke salinan data yang karakter non-numeriknya dihapus, dengan pengecualian koma dan titik? Nilai-nilai di atas akan mengembalikan hasil berikut:
$var1_copy = 3,373.31
$var2_copy = 12.322,11
Saya terkejut tidak ada lagi filter_var di sini karena ini adalah pertanyaan lama ...
PHP memiliki metode bawaan untuk melakukan ini menggunakan filter sanitasi . Secara khusus, yang digunakan dalam situasi ini adalah
FILTER_SANITIZE_NUMBER_FLOAT
denganFILTER_FLAG_ALLOW_FRACTION | FILTER_FLAG_ALLOW_THOUSAND
bendera. Seperti itu:Mungkin juga bermanfaat untuk dicatat bahwa karena built-in ke PHP, itu sedikit lebih cepat daripada menggunakan regex dengan pustaka PHP saat ini (meskipun secara harfiah dalam nanodetik).
sumber
Cara termudah untuk benar-benar menghapus semua karakter non-numerik:
\D
mewakili "karakter apa pun yang bukan digit desimal"http://php.net/manual/en/regexp.reference.escape.php
sumber
Anda dapat menggunakan
filter_var
untuk menghapus semua karakter ilegal kecuali angka, titik dan koma.FILTER_SANITIZE_NUMBER_FLOAT
filter digunakan untuk menghapus semua karakter non-numerik dari string.FILTER_FLAG_ALLOW_FRACTION
memungkinkan pemisah fraksi" . "
FILTER_FLAG_ALLOW_THOUSAND
untuk mendapatkan koma dari string.Kode
Keluaran
Untuk membaca lebih lanjut tentang filter_var () dan Sanitasi filter
sumber
Jika permintaan adalah untuk menghapus semua (dan tidak hanya satu) karakter non numerik, mungkin yang sebelumnya dapat ditulis seperti ini dengan cara yang sangat sederhana (tetapi Anda dapat menulis fungsi untuk meneruskan string dan membuatnya mengembalikan nilai yang dibutuhkan tanpa karakter .. pokoknya ..):
sumber
Jika huruf selalu di awal atau di akhir, Anda cukup menggunakan trim ... tidak diperlukan regex
sumber
Jawaban yang sama dengan middaparka tetapi hapus
,.
sumber