Hướng dẫn how can i add country code in php? - làm cách nào để thêm mã quốc gia vào php?

Tôi có truy vấn regex sau mà tôi đã xây dựng ý tưởng là lấy đầu vào của người dùng (số điện thoại) và sau đó đảm bảo tất cả các số là định dạng chính xác khi tôi lưu trữ nó trong cơ sở dữ liệu.

Vấn đề tôi gặp phải là Regex của tôi không phục vụ cho tất cả các kịch bản, tôi sẽ giải thích một chút.

Đây là mã hiện tại của tôi:

//format phone numbers
function Number_SA($number)
{
    //strip out everything but numbers
    $number =  preg_replace("/[^0-9]/", "", $number);
    //Strip out leading zeros:
    $number = ltrim($number, '0');
    //The default country code
    $default_country_code  = '+27';
    //Check if the number doesn't already start with the correct dialling code:
    if ( !preg_match('/^[+]'.$default_country_code.'/', $number)  ) {
        $number = $default_country_code.$number;
    }
    //return the converted number:
    return $number;
}

Hành vi tôi muốn là như sau; Nếu người dùng nhập bất kỳ định dạng nào sau đây, số sẽ kết thúc là +27

  • 797734809 #Missing a hàng đầu 0
  • 0797734809
  • 27797734809
  • +27797734809

Tất cả nên được chuyển đổi thành:

  • +27797734809

Tái bút: Lần đầu tiên tôi làm sạch đầu vào số với điều này:

function clean_input($data) 
{
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
}

Và sau đó tôi sử dụng hàm

function clean_input($data) 
{
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
}
3 trên số. Nói cách khác:

$number = clean_input($_POST["cell_number"]);
$msisdn = Number_SA($number);

PPS: number_sa, SA là viết tắt của Nam Phi kể từ khi tôi sống ở đó và tôi muốn điều này làm việc cho mã quốc gia của chúng tôi là +27

Giải pháp, tôi đã kết thúc với câu trả lời của @Kamil Kiełczewski bằng cách xây dựng nó vào chương trình của tôi như sau:, I ended up with @Kamil Kiełczewski answer by building it into my program as follows:

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    if (empty($_POST["cell_numbers"])) {
        $err = "Please add numbers!";
    } else {
        $numbers = test_input($_POST["cell_numbers"]);
        $numbers = explode("\n", str_replace("\r", "", $numbers));
        foreach ($numbers as $number) {
            $msisdn = preg_replace('/^(?:\+27|27|0)?/','+27', $number);
            //insert into the database
        }        
    }
}

(PECL GEOIP> = 0.2.0)

Geoip_country_code_by_name - Nhận mã quốc gia hai chữ cáiGet the two letter country code

Sự mô tả

GeoIP_Country_Code_By_Name (Chuỗi

function clean_input($data) 
{
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
}
4): Chuỗi(string
function clean_input($data) 
{
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
}
4
): string

Thông số

function clean_input($data) 
{
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
}
5

Tên máy chủ hoặc địa chỉ IP có vị trí sẽ được tra cứu.

Trả về giá trị

Trả về hai chữ cái mã quốc gia ISO khi thành công hoặc

function clean_input($data) 
{
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
}
6 nếu không thể tìm thấy địa chỉ trong cơ sở dữ liệu.
function clean_input($data) 
{
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
}
6
if the address cannot be found in the database.

Ví dụ

Ví dụ #1 ví dụ về geooip_country_code_by_name ()geoip_country_code_by_name() example

Điều này sẽ in nơi có ví dụ máy chủ.

function clean_input($data) 
{
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
}
7

Ví dụ trên sẽ xuất ra:

This host is located in: US

Ghi chú

Xem thêm

  • Geoip_country_code3_by_name () - Nhận mã quốc gia ba chữ cái
  • Geoip_country_name_by_name () - Nhận tên quốc gia đầy đủ

Ameen Oluajayi ¶

3 năm trước

function clean_input($data) 
{
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
}
8

function clean_input($data) 
{
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
}
9

$number = clean_input($_POST["cell_number"]);
$msisdn = Number_SA($number);
0

    Số điện thoại được tiêu chuẩn hóa theo định dạng quốc tế được gọi là E.164 kết hợp mã quốc gia và số thuê bao theo định dạng như thế này: +1415552671. Định dạng này được yêu cầu bởi nhiều API (bao gồm Twilio's) và có nghĩa là bạn không phải lưu trữ mã quốc gia và số điện thoại trong hai cột cơ sở dữ liệu riêng biệt.+14155552671. This format is required by many APIs (including Twilio's) and means that you don't have to store country codes and phone numbers in two separate database columns.

    Tuy nhiên, bạn có thể không muốn người dùng của mình phải nhập mã + và mã quốc gia khi họ cung cấp số điện thoại của họ cho:

    • Đăng ký tài khoản mới
    • Bật SMS 2FA
    • Yêu cầu gọi lại từ dịch vụ khách hàng
    • Đăng ký thông báo tiếp thị

    Bài đăng trên blog này sẽ đi qua cách xây dựng trường đầu vào số điện thoại để xử lý và phân tích số điện thoại bằng cách sử dụng plugin HTML, JavaScript và plugin

    $number = clean_input($_POST["cell_number"]);
    $msisdn = Number_SA($number);
    
    1 cơ bản. Chúng tôi sẽ bao gồm các khuyến nghị để xác minh điện thoại và phòng chống gian lận.

    Bạn có thể tìm thấy mã đã hoàn thành trên github của tôi.

    Plugin intl-tel-input có thể làm gì?

    Dự án này sử dụng nặng Intl-Tel-Input, "plugin JavaScript để nhập và xác thực các số điện thoại quốc tế". Tôi sẽ đề cập đến việc thiết lập plugin thông thường của mình, nhưng nó có rất nhiều tùy chọn cấu hình bổ sung mà bạn có thể khám phá trong tài liệu.

    Plugin cung cấp mã quốc gia thả xuống với các cờ đẹp để đại diện cho các quốc gia khác nhau. Nó cũng xử lý số thuê bao hoặc "định dạng quốc gia" để bình thường hóa đầu vào của người dùng có thể bao gồm không gian, dấu ngoặc đơn, dấu gạch ngang, v.v.

    Hướng dẫn how can i add country code in php? - làm cách nào để thêm mã quốc gia vào php?

    Nhúng plugin intl-tel input vào mã của bạn

    Chúng tôi sẽ giữ mọi thứ khá đơn giản ở đây và bắt đầu với một số vani HTML và JavaScript. Tạo một tệp mới có tên

    $number = clean_input($_POST["cell_number"]);
    $msisdn = Number_SA($number);
    
    2 và thêm mã sau:

    
    
     
       International telephone input
       
       
       
       
     
     
     
    
    

    Điều này kéo theo các phiên bản CDN của CSS và JS của plugin, giúp chúng tôi hiển thị mã quốc gia thả xuống và xử lý các số điện thoại. Tôi đang sử dụng v17.0.8, nhưng bạn có thể tìm thấy phiên bản mới nhất bằng cách kiểm tra các thẻ. Bạn cũng có thể cài đặt plugin với một bundler hoặc tải xuống và tự lưu trữ mã nguồn.

    Đối với các kiểu đẹp hơn, hãy tạo một tệp mới trong cùng một thư mục được gọi là

    $number = clean_input($_POST["cell_number"]);
    $msisdn = Number_SA($number);
    
    3 và thêm CSS được tìm thấy ở đây.

    Tiếp theo, thêm biểu mẫu sẽ bao gồm đầu vào số điện thoại. Bên trong thẻ

    $number = clean_input($_POST["cell_number"]);
    $msisdn = Number_SA($number);
    
    4 của tệp
    $number = clean_input($_POST["cell_number"]);
    $msisdn = Number_SA($number);
    
    2, thêm HTML sau:

    Enter your phone number:

    Nếu bạn tải tệp này vào trình duyệt vào thời điểm này, bạn sẽ thấy trường biểu mẫu nhưng chưa có định dạng, chúng tôi vẫn cần khởi tạo plugin.

    Hướng dẫn how can i add country code in php? - làm cách nào để thêm mã quốc gia vào php?

    Khởi tạo plugin intl-tel-input

    Thêm một thẻ tập lệnh bên dưới thân nhưng bên trong HTML và thêm mã khởi tạo sau:

     
     
    
    
    

    $number = clean_input($_POST["cell_number"]);
    $msisdn = Number_SA($number);
    
    6 là tùy chọn về mặt kỹ thuật, nhưng nó cung cấp rất nhiều chức năng thực sự hữu ích như các giữ chỗ cụ thể của quốc gia và định dạng E.164 mà chúng ta sẽ sử dụng dưới đây.

    Nạp lại trang và bạn sẽ thấy người chọn đất nước và một người giữ chỗ ngay bây giờ.

    Hướng dẫn how can i add country code in php? - làm cách nào để thêm mã quốc gia vào php?

    Xử lý đầu vào số điện thoại để có được định dạng quốc tế

    Thêm một biểu ngữ cảnh báo bên dưới biểu mẫu của chúng tôi. Những điều này sẽ giúp chúng tôi hiển thị kết quả của chúng tôi.

     
     
     
    

    Tiếp theo, thêm một chức năng để xử lý biểu mẫu gửi. Bên trong thẻ

    $number = clean_input($_POST["cell_number"]);
    $msisdn = Number_SA($number);
    
    7 của bạn và sau khi khởi tạo plugin, thêm các mục sau:

    const info = document.querySelector(".alert-info");
    
    function process(event) {
     event.preventDefault();
    
     const phoneNumber = phoneInput.getNumber();
    
     info.style.display = "";
     info.innerHTML = `Phone number in E.164 format: ${phoneNumber}`;
    }
    

    Phần quan trọng nhất ở đây là

    $number = clean_input($_POST["cell_number"]);
    $msisdn = Number_SA($number);
    
    8 - đây là mã plugin chuyển đổi mã quốc gia và đầu vào người dùng được chọn thành định dạng quốc tế.

    Tải lại trang, nhập số điện thoại và bạn sẽ thấy định dạng quốc tế!

    Hướng dẫn how can i add country code in php? - làm cách nào để thêm mã quốc gia vào php?

    Tiền thưởng: Làm cho vị trí plugin nhận biết

    Plugin mặc định cho Hoa Kỳ, nhưng có lẽ bạn đang thực hiện điều này vì bạn có người dùng toàn cầu. Bạn có thể cập nhật các cài đặt lên mặc định vào vị trí của người dùng dựa trên địa chỉ IP của họ.

    Đăng ký tài khoản miễn phí tại IPINFO và lấy mã thông báo truy cập của bạn. Bạn có thể sử dụng API địa chỉ IP khác cho điều này nếu bạn có một API khác nhau. Thêm chức năng sau ở đầu thẻ

    $number = clean_input($_POST["cell_number"]);
    $msisdn = Number_SA($number);
    
    7 của bạn trước khi xác định đối tượng
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        if (empty($_POST["cell_numbers"])) {
            $err = "Please add numbers!";
        } else {
            $numbers = test_input($_POST["cell_numbers"]);
            $numbers = explode("\n", str_replace("\r", "", $numbers));
            foreach ($numbers as $number) {
                $msisdn = preg_replace('/^(?:\+27|27|0)?/','+27', $number);
                //insert into the database
            }        
        }
    }
    
    0:

    function clean_input($data) 
    {
        $data = trim($data);
        $data = stripslashes($data);
        $data = htmlspecialchars($data);
        return $data;
    }
    
    0

    Sau đó, cập nhật khởi tạo Intl-Tel-input để bao gồm hai tham số:

    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        if (empty($_POST["cell_numbers"])) {
            $err = "Please add numbers!";
        } else {
            $numbers = test_input($_POST["cell_numbers"]);
            $numbers = explode("\n", str_replace("\r", "", $numbers));
            foreach ($numbers as $number) {
                $msisdn = preg_replace('/^(?:\+27|27|0)?/','+27', $number);
                //insert into the database
            }        
        }
    }
    
    1 và
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        if (empty($_POST["cell_numbers"])) {
            $err = "Please add numbers!";
        } else {
            $numbers = test_input($_POST["cell_numbers"]);
            $numbers = explode("\n", str_replace("\r", "", $numbers));
            foreach ($numbers as $number) {
                $msisdn = preg_replace('/^(?:\+27|27|0)?/','+27', $number);
                //insert into the database
            }        
        }
    }
    
    2.

    function clean_input($data) 
    {
        $data = trim($data);
        $data = stripslashes($data);
        $data = htmlspecialchars($data);
        return $data;
    }
    
    1

    Bây giờ nếu tôi đặt VPN của mình cho Áo, plugin sẽ cập nhật quốc gia mặc định

    Hướng dẫn how can i add country code in php? - làm cách nào để thêm mã quốc gia vào php?

    Phần thưởng: Thêm các quốc gia ưa thích

    Một trong những tính năng yêu thích khác của tôi là cài đặt "quốc gia ưa thích", cho phép bạn chỉ định các quốc gia xuất hiện ở đầu danh sách. Trong ví dụ này, tôi đã xác định rằng hầu hết người dùng của tôi đều ở Mỹ, Colombia, Ấn Độ và Đức và ưu tiên các tùy chọn đó.

    Hướng dẫn how can i add country code in php? - làm cách nào để thêm mã quốc gia vào php?

    Bạn có thể cập nhật cài đặt này nơi bạn khởi tạo plugin bằng cách thêm một mảng

    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        if (empty($_POST["cell_numbers"])) {
            $err = "Please add numbers!";
        } else {
            $numbers = test_input($_POST["cell_numbers"]);
            $numbers = explode("\n", str_replace("\r", "", $numbers));
            foreach ($numbers as $number) {
                $msisdn = preg_replace('/^(?:\+27|27|0)?/','+27', $number);
                //insert into the database
            }        
        }
    }
    
    3 vào định dạng mã Alpha-2 ISO 3166-1

    function clean_input($data) 
    {
        $data = trim($data);
        $data = stripslashes($data);
        $data = htmlspecialchars($data);
        return $data;
    }
    
    2

    Xác thực đầu vào số điện thoại

    Bạn có thể nhận thấy rằng biểu mẫu này chưa thực sự ngăn chặn bất kỳ số điện thoại không hợp lệ nào. Bạn có thể theo dõi bài đăng này về cách xác thực đầu vào số điện thoại để chúng tôi không có người gửi những thứ như thế này:

    Hướng dẫn how can i add country code in php? - làm cách nào để thêm mã quốc gia vào php?

    Thực tiễn tốt nhất để xác minh điện thoại

    Bạn chắc chắn muốn bình thường hóa các số điện thoại ở định dạng E.164, nhưng nếu bạn có kế hoạch lưu trữ các số đó, bạn cũng sẽ muốn thực hiện xác minh điện thoại. Xác minh điện thoại giúp đảm bảo rằng người dùng không vô tình gõ sai số, rằng họ có quyền kiểm soát số họ liên kết với tài khoản của họ và bạn không spam nhầm người - bạn có ý tưởng. May mắn thay, API xác minh của Twilio giúp dễ dàng thực hiện xác minh điện thoại thông qua SMS hoặc gọi thoại. Kiểm tra dự án này trên trao đổi mã của chúng tôi để tìm hiểu cách triển khai các mật mã một lần (bạn đang ở một nửa với số điện thoại đầu vào!).

    Bạn cũng có thể quan tâm đến:

    • Tài liệu API tra cứu Twilio
    • Xác minh điện thoại không có máy chủ với Twilio xác minh
    • Cách khuyến khích người dùng bật 2FA
    • Cách xây dựng thanh toán nhanh với xác minh SMS bằng cách sử dụng Stripe và Twilio

    Câu hỏi về đầu vào số điện thoại và xác minh? Bạn có thể tìm thấy tôi trên Twitter @kelleyrobinson. Tôi không thể chờ đợi để xem những gì bạn xây dựng.