ฉันประหลาดใจที่ไม่มีการกล่าวถึงfilter_varที่นี่สำหรับคำถามนี้ ...
PHP ได้สร้างขึ้นในวิธีการของการทำเช่นนี้โดยใช้ฟิลเตอร์ฆ่าเชื้อ โดยเฉพาะอย่างยิ่งสิ่งที่จะใช้ในสถานการณ์นี้คือFILTER_SANITIZE_NUMBER_FLOAT
กับFILTER_FLAG_ALLOW_FRACTION | FILTER_FLAG_ALLOW_THOUSAND
ธง ชอบมาก
$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"
มันอาจจะคุ้มค่าที่จะต้องทราบว่าเพราะมันติดตั้ง PHP ไว้แล้วจึงเร็วกว่าการใช้ regex กับไลบรารี่ปัจจุบันของ PHP เล็กน้อย (แม้ว่าจะเป็นอักษรนาโนวินาที)