Trong hướng dẫn này, bạn sẽ tìm hiểu về xác thực số điện thoại quốc tế bằng cách sử dụng lập trình PHP. Khi số điện thoại được lấy từ người dùng bằng cách sử dụng các trường biểu mẫu, nên xác thực giá trị số điện thoại bằng mã PHP. Ví dụ sau giải thích cách thực hiện đối với Số điện thoại quốc tế Show
Thí dụ Xác thực số điện thoại quốc tếNhập số điện thoại của bạn Mã quốc giaMã vùng Số điện thoại Đối với đầu vào ở trên, thông báo lỗi được tạo như bên dưới
Mã PHP mẫu// Kiểm tra xem việc gửi đã được thực hiện chưa //Khai báo các biến cần thiết //Gán các giá trị đã nhập cho các biến để xác thực // Giá trị đã nhập được kiểm tra đúng định dạng // Hàm do người dùng định nghĩa để hiển thị biểu mẫu trong trường hợp có lỗi Mã HTML cho biểu mẫu sau Cắt 'n' Dán mã cho ví dụ trênTham khảo. Vui lòng thích, +1, liên kết đến và chia sẻ tài nguyên SmartWebby này nếu bạn thấy nó hữu ích. ThanksThư viện PHP để phân tích cú pháp, định dạng, lưu trữ và xác thực số điện thoại quốc tế. Thư viện này dựa trên libphonenumber của Google Cài đặtPhiên bản PHP 5. 3 lên đến PHP 8. 1 hiện đang được hỗ trợ Phần mở rộng mbstring PECL là bắt buộc Nên sử dụng trình soạn thảo để cài đặt thư viện $ composer require giggsey/libphonenumber-for-php Bạn cũng có thể sử dụng bất kỳ trình tải tự động tuân thủ PSR-4 nào khác Nếu bạn không sử dụng trình soạn thảo, hãy đảm bảo rằng bạn cũng tải bất kỳ phần phụ thuộc nào mà dự án này có, chẳng hạn như giggsey/locale giggsey/libphonenumber-for-php-liteNếu bạn chỉ muốn đảm bảo chức năng PhoneNumber Util cốt lõi, bạn có thể sử dụng giggsey/libphonenumber-for-php-lite, cung cấp kích thước gói nhỏ hơn nhiều Tài liệu
Bản trình diễn trực tuyếnBản trình diễn trực tuyến có sẵn và nguồn có thể được tìm thấy tại giggsey/libphonenumber-example Điểm nổi bật về chức năng
lập phiên bảnThư viện này sẽ cố gắng tuân theo các số phiên bản giống như Google. Có thể có các bản phát hành bổ sung khi cần thiết để khắc phục các sự cố nghiêm trọng không thể đợi đến bản phát hành tiếp theo từ Google Điều này không có nghĩa là dự án này có thể không tuân theo Phiên bản ngữ nghĩa mà thay vào đó là chính sách phiên bản của Google. Do đó, các bước nhảy trong các phiên bản chính có thể không thực sự chứa bất kỳ thay đổi không tương thích ngược nào. Vui lòng đọc ghi chú phát hành cho các bản phát hành đó Google cố gắng phát hành các phiên bản của họ theo Phiên bản ngữ nghĩa, như được trình bày trong Ví dụ nhanhGiả sử bạn có một chuỗi đại diện cho một số điện thoại từ Thụy Sĩ. Đây là cách bạn phân tích/chuẩn hóa nó thành đối tượng PhoneNumber $swissNumberStr = "044 668 18 00"; $phoneUtil = \libphonenumber\PhoneNumberUtil::getInstance(); try { $swissNumberProto = $phoneUtil->parse($swissNumberStr, "CH"); var_dump($swissNumberProto); } catch (\libphonenumber\NumberParseException $e) { var_dump($e); } Tại thời điểm này, swissNumberProto chứa
Bây giờ hãy để chúng tôi xác nhận xem số đó có hợp lệ không $isValid = $phoneUtil->isValidNumber($swissNumberProto); var_dump($isValid); // true Có một vài định dạng được hỗ trợ bởi phương pháp định dạng, như minh họa bên dưới // Produces "+41446681800" echo $phoneUtil->format($swissNumberProto, \libphonenumber\PhoneNumberFormat::E164); // Produces "044 668 18 00" echo $phoneUtil->format($swissNumberProto, \libphonenumber\PhoneNumberFormat::NATIONAL); // Produces "+41 44 668 18 00" echo $phoneUtil->format($swissNumberProto, \libphonenumber\PhoneNumberFormat::INTERNATIONAL); Bạn cũng có thể chọn định dạng số theo cách nó được gọi từ một quốc gia khác // Produces "011 41 44 668 1800", the number when it is dialled in the United States. echo $phoneUtil->formatOutOfCountryCallingNumber($swissNumberProto, "US"); // Produces "00 41 44 668 18 00", the number when it is dialled in Great Britain. echo $phoneUtil->formatOutOfCountryCallingNumber($swissNumberProto, "GB"); mã hóa địa lý$phoneUtil = \libphonenumber\PhoneNumberUtil::getInstance(); $swissNumberProto = $phoneUtil->parse("044 668 18 00", "CH"); $usNumberProto = $phoneUtil->parse("+1 650 253 0000", "US"); $gbNumberProto = $phoneUtil->parse("0161 496 0000", "GB"); $geocoder = \libphonenumber\geocoding\PhoneNumberOfflineGeocoder::getInstance(); // Outputs "Zurich" echo $geocoder->getDescriptionForNumber($swissNumberProto, "en_US"); // Outputs "Zürich" echo $geocoder->getDescriptionForNumber($swissNumberProto, "de_DE"); // Outputs "Zurigo" echo $geocoder->getDescriptionForNumber($swissNumberProto, "it_IT"); // Outputs "Mountain View, CA" echo $geocoder->getDescriptionForNumber($usNumberProto, "en_US"); // Outputs "Mountain View, CA" echo $geocoder->getDescriptionForNumber($usNumberProto, "de_DE"); // Outputs "미국" (Korean for United States) echo $geocoder->getDescriptionForNumber($usNumberProto, "ko-KR"); // Outputs "Manchester" echo $geocoder->getDescriptionForNumber($gbNumberProto, "en_GB"); // Outputs "영국" (Korean for United Kingdom) echo $geocoder->getDescriptionForNumber($gbNumberProto, "ko-KR"); Số ngắnThông tin$shortNumberInfo = \libphonenumber\ShortNumberInfo::getInstance(); // true var_dump($shortNumberInfo->isEmergencyNumber("999", "GB")); // true var_dump($shortNumberInfo->connectsToEmergencyNumber("999", "GB")); // false var_dump($shortNumberInfo->connectsToEmergencyNumber("911", "GB")); // true var_dump($shortNumberInfo->isEmergencyNumber("911", "US")); // true var_dump($shortNumberInfo->connectsToEmergencyNumber("911", "US")); // false var_dump($shortNumberInfo->isEmergencyNumber("911123", "US")); // true var_dump($shortNumberInfo->connectsToEmergencyNumber("911123", "US")); Ánh xạ số điện thoại đến nhà cung cấp dịch vụ$phoneUtil = \libphonenumber\PhoneNumberUtil::getInstance(); $swissNumberProto = $phoneUtil->parse("798765432", "CH"); $carrierMapper = \libphonenumber\PhoneNumberToCarrierMapper::getInstance(); // Outputs "Swisscom" echo $carrierMapper->getNameForNumber($swissNumberProto, "en"); Ánh xạ số điện thoại tới múi giờ$phoneUtil = \libphonenumber\PhoneNumberUtil::getInstance(); $swissNumberProto = $phoneUtil->parse("798765432", "CH"); $timeZoneMapper = \libphonenumber\PhoneNumberToTimeZonesMapper::getInstance(); // returns array("Europe/Zurich") $timeZones = $timeZoneMapper->getTimeZonesForNumber($swissNumberProto); Câu hỏi thường gặpVấn đề với số không hợp lệ?Thư viện này sử dụng siêu dữ liệu số điện thoại từ libphonenumber của Google. Nếu thư viện này hoạt động như dự định, nó sẽ cung cấp kết quả giống như phiên bản Java của dự án của Google Nếu bạn cho rằng một số điện thoại đang trả về kết quả không chính xác, trước tiên hãy kiểm tra số điện thoại đó bằng libphonenumber qua Bản trình diễn trực tuyến của họ. Nếu điều đó trả về kết quả tương tự như dự án này và bạn cảm thấy đó là lỗi, hãy nêu vấn đề với dự án libphonenumber Nếu Bản trình diễn trực tuyến của Google đưa ra kết quả khác với bản trình diễn libphonenumber-for-php, vui lòng nêu vấn đề tại đây Đang tạo dữ liệuViệc tạo dữ liệu thường không cần thiết, vì kho lưu trữ này thường sẽ luôn có siêu dữ liệu tối đa Nếu bạn cần tạo dữ liệu, các lệnh được cung cấp bởi Phing. Đảm bảo bạn đã cài đặt tất cả các phụ thuộc của nhà soạn nhạc dev, sau đó chạy $swissNumberStr = "044 668 18 00"; $phoneUtil = \libphonenumber\PhoneNumberUtil::getInstance(); try { $swissNumberProto = $phoneUtil->parse($swissNumberStr, "CH"); var_dump($swissNumberProto); } catch (\libphonenumber\NumberParseException $e) { var_dump($e); }0 Quá trình biên dịch này sao chép dự án libphonenumber ở phiên bản được chỉ định trong PHIÊN BẢN SIÊU DỮ LIỆU. txt Làm cách nào để xác thực một số trong PHP?Hàm is_numeric() kiểm tra xem một biến là số hay chuỗi số. Hàm này trả về true (1) nếu biến là số hoặc chuỗi số, ngược lại trả về false/không có gì.
Làm cách nào để xóa mã quốc gia khỏi số điện thoại trong PHP?preg_replace('/\D/', '', ($phone)); php . thay thế trước .
Làm cách nào để định dạng số điện thoại trong PHP?Định dạng số điện thoại sử dụng substr()
. Để xử lý các định dạng số điện thoại khác nhau, bạn cần sử dụng biểu thức chính quy và hàm preg_replace().
Cách tốt nhất để xác thực số điện thoại là gì?Các phương pháp hay nhất để xác thực số điện thoại . Xác nhận rằng số điện thoại hợp lệ. . Kiểm tra loại đường dây, bao gồm số điện thoại di động, điện thoại cố định và VoIP. . Xây dựng danh sách cho phép mã quốc gia để chấp nhận. . Duy trì một danh sách các nhà cung cấp dịch vụ dựa trên danh tiếng |