2011-07-07 34 views
97

Tôi đang cố xóa mọi thứ khỏi chuỗi nhưng chỉ là số (0-9).Mã PHP để xóa mọi thứ trừ số

Tôi nghĩ điều này sẽ làm việc ..

echo preg_replace("[^0-9]","",'604-619-5135'); 

Nhưng nó echos "604-619-5135". Tôi đang thiếu gì ???

Trả lời

196

Hãy thử điều này:

preg_replace('/[^0-9]/', '', '604-619-5135'); 

preg_replace sử dụng PCREs mà thường bắt đầu và kết thúc bằng một /.

+0

Trích dẫn bên trong/đôi không liên quan gì đến PCRE tho. Rõ ràng (trong những ngày trước '(? Flags)') những người đã thiết kế/viết hàm/API nghĩ rằng bạn nên chuyển cờ regex với biểu mẫu '/ flags' được trích dẫn kép thay vì sử dụng tham số hàm bổ sung . – Qtax

+5

@ Qtax: điểm tốt, vâng tôi biết đó là nơi chúng tôi lấy từ "grep" từ ("g/re/p") –

9

Bạn cần phải kèm theo mẫu trong dấu phân cách - thường là dấu gạch chéo (/) được sử dụng. Hãy thử điều này:

echo preg_replace("/[^0-9]/","",'604-619-5135'); 
+1

[Dấu phân cách có thể là bất kỳ ký tự không phải chữ và số, dấu gạch chéo ngược, không phải khoảng trắng.] (http://php.net/manual/en/regexp.reference.delimiters.php) –

83

Đây là nhà phát triển tương lai, bạn cũng có thể thử điều này. Đơn giản quá

echo preg_replace('/\D/', '', '604-619-5135'); 
+2

liều không hoạt động nếu số có + bắt đầu – mi3afzal

+5

Xin chào, tôi là một nhà phát triển từ tương lai. Điều này đã thực sự phục vụ tốt nhu cầu của chúng tôi. Cảm ơn bạn. – zesda

Các vấn đề liên quan