Tôi ngạc nhiên không có đề cập đến bộ lọc_var ở đây vì đây là một câu hỏi cũ ...
PHP có một phương thức tích hợp để thực hiện việc này bằng các bộ lọc khử trùng . Cụ thể, một để sử dụng trong tình huống này là FILTER_SANITIZE_NUMBER_FLOAT
với các FILTER_FLAG_ALLOW_FRACTION | FILTER_FLAG_ALLOW_THOUSAND
cờ. Thích như vậy:
$numeric_filtered = filter_var("AR3,373.31", FILTER_SANITIZE_NUMBER_FLOAT,
FILTER_FLAG_ALLOW_FRACTION | FILTER_FLAG_ALLOW_THOUSAND);
echo $numeric_filtered; // Will print "3,373.31"
Cũng đáng lưu ý rằng vì nó được tích hợp sẵn trong PHP, nên nó nhanh hơn một chút so với sử dụng regex với các thư viện hiện tại của PHP (mặc dù theo nghĩa đen là nano giây).