Mã PHP để loại bỏ mọi thứ trừ số


135

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

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

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

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

Câu trả lời:


275

Thử cái này:

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

preg numplace sử dụng PCRE thường bắt đầu và kết thúc bằng a /.


Trích dẫn bên trong / kép 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 nên chuyển các cờ regex với /flagsdạng trích dẫn kép thay vì sử dụng tham số hàm bổ sung.
Qtax

6
@Qtax: điểm tốt, vâng tôi biết đó là nơi chúng tôi nhận được từ "grep" từ ("g / re / p")
Chris Eberle

109

Điều này là dành cho các nhà phát triển trong 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');

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

6
Tôi đến từ tương lai xa hơn Zesda và có thể xác nhận, nó vẫn là một trợ giúp
myshadowself

3
Tôi đã trở lại 2 tương lai và tôi có thể xác nhận rằng họ vẫn chưa tìm thấy một cách tốt hơn.
Eoin

4
Tôi là nhà phát triển cuối cùng từ tương lai xa nhất. Tôi buồn khi nói rằng điều này không còn được sử dụng nữa. Các bạn không nên sử dụng nhiều ống hút nhựa, hãy tin tôi, bạn sẽ thấy khi bạn đến đây .... Nếu bạn làm nó.
Jeremy

2
Chỉ cần FYI: chúng ta trong Thế kỷ 39 vẫn sử dụng cái này.
người dùng-44651


3

một cách thiết thực hơn nhiều cho những người không muốn sử dụng regex:

$data = filter_var($data, FILTER_SANITIZE_NUMBER_INT);

lưu ý: nó hoạt động với số điện thoại quá.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.