ฉันพยายามลบทุกอย่างออกจากสตริง แต่เป็นเพียงตัวเลข (0-9)
คิดว่าคงได้ผล ..
echo preg_replace("[^0-9]","",'604-619-5135');
แต่มันสะท้อน "604-619-5135" ฉันหายไปไหน ???
ฉันพยายามลบทุกอย่างออกจากสตริง แต่เป็นเพียงตัวเลข (0-9)
คิดว่าคงได้ผล ..
echo preg_replace("[^0-9]","",'604-619-5135');
แต่มันสะท้อน "604-619-5135" ฉันหายไปไหน ???
คำตอบ:
ลองสิ่งนี้:
preg_replace('/[^0-9]/', '', '604-619-5135');
preg_replace ใช้ PCRE ซึ่งโดยทั่วไปเริ่มต้นและลงท้ายด้วยไฟล์/
.
สำหรับนักพัฒนาในอนาคตคุณสามารถลองใช้สิ่งนี้ได้ เรียบง่ายเกินไป
echo preg_replace('/\D/', '', '604-619-5135');
คุณจะต้องใส่รูปแบบในตัวคั่น - โดยทั่วไปจะใช้เครื่องหมายทับ (/) ลองสิ่งนี้:
echo preg_replace("/[^0-9]/","",'604-619-5135');
วิธีที่เป็นประโยชน์มากขึ้นสำหรับผู้ที่ไม่ต้องการใช้ regex:
$data = filter_var($data, FILTER_SANITIZE_NUMBER_INT);
หมายเหตุ: ใช้งานได้กับหมายเลขโทรศัพท์ด้วย
FILTER_SANITIZE_NUMBER_INT
ออกจาก+
เครื่องหมายบวกและลบ-
ไม่ใช่ตัวเลขเท่านั้น
(?flags)
) ผู้ที่ออกแบบ / เขียนฟังก์ชัน / API คิดว่าเป็นความคิดที่ดีที่จะส่งผ่านแฟล็ก regex ด้วย/flags
รูปแบบเครื่องหมายคำพูดคู่แทนการใช้พารามิเตอร์ฟังก์ชันพิเศษ