Php Beyaz liste

4 Cevap php

Ben onların telefon numarasını girmek gerekiyor kullanıcılar için bir giriş var. Sorun bazı insanlar onları tire ve boşluk ile telefon numarasını yazmak olmasıdır. Ben böyle şeyleri kaldırmak ve benim veritabanında yalnızca rakam saklamak için giriş yalak bir filtre koymak istiyorum.

I figured that I could do some str_replace() for the whitespaces and special chars. However I think that a better approach would be to pick out just the digits instead of removing everything else. I think that I have heard the term "whitelisting" about this.

PHP bu çözme yönünde bana gelin misiniz?

Example: Ben "0333 452-123-4" girdi "03334521234" neden istiyorum

Teşekkürler!

4 Cevap

Konuşma diline ve bölgesel farklılıklar çok var çünkü bu önemsiz olmayan bir sorundur. What is the best way for converting phone numbers into international format (E.164) using Java? Bu Java ama aynı kurallar geçerlidir bakın.

Ben daha tam özellikli şey gerekmedikçe, basit tutmak olduğunu söyleyebilirim. Geçerli olan düzenli ifadelerin bir listesini oluşturun ve bir eşleşme bulmak kadar her karşı girişini kontrol edin.

Eğer isterseniz really, basit, sade olmayan basamak kaldırın:

$phone = preg_replace('![^\d]+!', '', $phone);

Bu arada, sadece basamak seçmek dışarı, tanımı gereği, her şeyi kaldırarak olarak aynıdır. Eğer farklı bir şey demek durumunda bu ifadeleri isteyebilirsiniz.

$number = filter_var(str_replace(array("+","-"), '', $number), FILTER_SANITIZE_NUMBER_INT);

Filter_Var artıları ve eksileri ama her şeyi kaldırır ve str_replace o kurtulur.

veya preg_replace kullanabilirsiniz

$number = preg_replace('/[^0-9]/', '', $number);

Siz bunu iki şekilde yapabiliriz. Dizesinde her dizin yineleme aracılığıyla, ve bunun üzerine () is_numeric çalıştırmak veya dize düzenli ifade kullanabilirsiniz.

İstemci tarafında ben salık bir form oluştururken tasarım bazı biçimlendirme kullanarak yok. Bu zip veya telefon alanlar için iyidir. plugin, bir başvuru için bu jquery bir göz atın. Daha sonra sunucu tarafında çok kolay olacak.