Rumah > hujung hadapan web > tutorial js > Cara terbaik untuk menyimpan nombor telefon dalam apl anda

Cara terbaik untuk menyimpan nombor telefon dalam apl anda

Susan Sarandon
Lepaskan: 2024-12-29 17:49:13
asal
1007 orang telah melayarinya

Best way to store phone numbers in your app

Apabila menyimpan nombor telefon di bahagian belakang, adalah penting untuk mempertimbangkan kecekapan, penyeragaman, pengesahan dan pengantarabangsaan. Cara terbaik untuk menyimpan nombor telefon selalunya bergantung pada keperluan aplikasi anda (cth., sokongan antarabangsa, peraturan pengesahan, keperluan format).

Pilihan 1: Menyimpan nombor telefon lengkap dengan kod negara

Pendekatan ini menyimpan nombor telefon penuh, termasuk kod negara, dalam format E.164 antarabangsa (iaitu format nombor telefon yang diiktiraf di peringkat antarabangsa).

Mengapa Format E.164?

  • Penstandardan: E.164 ialah format nombor telefon yang diterima secara global yang memastikan keunikan. Ia termasuk kod negara dan mengalih keluar sebarang aksara pemformatan (seperti ruang, tanda sempang atau kurungan), hanya meninggalkan digit.
  • Ketekalan: Dengan menyimpan nombor telefon dalam format E.164, anda mengelakkan ketidakkonsistenan dalam pemformatan merentas pengguna dan sistem yang berbeza.

  • Pengesahan: Anda boleh mengesahkan nombor telefon dengan mudah menggunakan perpustakaan seperti libphonenumber (digunakan oleh Google) untuk mengesahkan bahawa nombor telefon itu dibentuk dengan baik dan sah untuk negara tertentu.

Contoh Format E.164:

  • AS: 18005555555
  • UK: 442079460958
  • India: 919167988354

Cara Menyimpan:

Skema Pangkalan Data: Simpan nombor telefon sebagai medan rentetan tunggal dalam format E.164.
Jenis medan: Rentetan atau VARCHAR (bergantung pada pangkalan data).
Contoh: VARCHAR(15) (E.164 membenarkan maksimum 15 digit).

Kelebihan:

  • Pengantarabangsaan: Ia menyokong semua nombor global, menjadikan sistem anda mudah disesuaikan dengan mana-mana negara.
  • Logik Ringkas: Memandangkan nombor telefon disimpan dalam format seragam, anda tidak perlu berurusan dengan variasi dalam format, pengesahan atau pengekstrakan kod negara.
  • Tiada Data Lebihan: Anda menyimpan satu format berkanun, mengurangkan risiko lebihan atau data tidak konsisten.

Kelemahan:

  • Pengalaman Pengguna: Pengguna mesti memasukkan nombor telefon penuh dengan kod negara, yang mungkin tidak sesuai untuk semua kes penggunaan (cth., input nombor sahaja tempatan).
CREATE TABLE users (
  id INT PRIMARY KEY,
  phone_number VARCHAR(15) NOT NULL
);

Salin selepas log masuk
Salin selepas log masuk

Pilihan 2: Menyimpan nombor telefon dengan kod negara yang berasingan

Dalam pendekatan ini, anda membahagikan nombor telefon kepada dua medan: satu untuk kod negara dan satu untuk nombor tempatan. Ini membolehkan lebih fleksibiliti untuk pemformatan setempat dan mungkin lebih baik jika aplikasi anda memerlukan gelagat nombor telefon yang berbeza mengikut wilayah (cth., peraturan pengesahan, paparan format).

CREATE TABLE users (
  id INT PRIMARY KEY,
  phone_number VARCHAR(15) NOT NULL
);

Salin selepas log masuk
Salin selepas log masuk

Kelebihan:

  • Input setempat.
  • Pemformatan yang mudah
  • Penghuraian yang dipermudahkan.

Kelemahan:

  • Logik Lebih Kompleks: Anda mungkin memerlukan logik tambahan untuk mengurus kod negara dan nombor tempatan secara berasingan, terutamanya untuk pengesahan atau semasa membina semula nombor untuk paparan.
  • Lewahan Berpotensi: Jika pengguna menukar kod negara atau nombor telefon dengan kerap, anda mungkin menghadapi masalah dengan lebihan, terutamanya apabila bekerja dengan berbilang entri merentas sistem yang berbeza.

Contoh Amalan Terbaik (E.164):

Berikut ialah contoh penuh pengendalian nombor telefon dengan format E.164 dan libphonenumber untuk pengesahan dalam Node.js:

  1. Pasang libphonenumber:
CREATE TABLE users (
  id INT PRIMARY KEY,
  country_code VARCHAR(5) NOT NULL,
  local_number VARCHAR(20) NOT NULL
);
Salin selepas log masuk
  1. Contoh Kod (Node.js/Express):
npm install google-libphonenumber
Salin selepas log masuk

Dapatkan semula kod negara daripada nombor telefon

Untuk mendapatkan semula kod negara (seperti AS untuk Amerika Syarikat) daripada nombor telefon menggunakan pustaka ini, anda boleh menggunakan fungsi getRegionCodeForNumber. Fungsi ini mengambil nombor telefon (yang mesti dihuraikan menggunakan parseAndKeepRawInput atau serupa) dan mengembalikan kod negara dalam format ISO 3166-1 alpha-2 (cth., IN, US, GB, dll.).

Contoh kerja -

const { PhoneNumberUtil, PhoneNumberFormat } = require('google-libphonenumber');
const phoneUtil = PhoneNumberUtil.getInstance();

const validatePhoneNumber = (phoneNumber, countryCode) => {
  try {
    const number = phoneUtil.parseAndKeepRawInput(phoneNumber, countryCode);
    const isValid = phoneUtil.isValidNumber(number);
    const formattedNumber = phoneUtil.format(number, PhoneNumberFormat.E164);

    return {
      isValid,
      formattedNumber
    };
  } catch (error) {
    return { isValid: false, error: 'Invalid phone number' };
  }
};

// Example usage
const { isValid, formattedNumber } = validatePhoneNumber('800-555-5555', 'US');
console.log(isValid, formattedNumber);  // true, +18005555555
Salin selepas log masuk

Penjelasan:

  • parseAndKeepRawInput(nombor telefon):
    Kaedah ini digunakan untuk menghuraikan nombor telefon dan menyimpan input mentah, bermakna ia boleh mengendalikan input dalam pelbagai format (cth., dengan ruang, sempang atau kurungan).

  • getRegionCodeForNumber(nombor):
    Fungsi ini mengembalikan kod negara (kod ISO 3166-1 alpha-2, seperti IN, AS, GB, dll.) yang dikaitkan dengan nombor telefon yang dihuraikan.
    Ia melakukan ini dengan memadankan nombor dengan senarai dalaman corak nombor telefon khusus negara.

Output yang Dijangka

const { PhoneNumberUtil } = require('google-libphonenumber');
const phoneUtil = PhoneNumberUtil.getInstance();

// Function to get country code (ISO 3166-1 alpha-2)
const getCountryCodeFromPhoneNumber = (phoneNumber) => {
  try {
    // Parse the phone number and get the region (country code)
    const number = phoneUtil.parseAndKeepRawInput(phoneNumber);
    const countryCode = phoneUtil.getRegionCodeForNumber(number);
    return countryCode;
  } catch (error) {
    console.error("Error parsing phone number:", error);
    return null;
  }
};

// Test with different phone numbers
const testPhoneNumbers = [
  "+919167988354", // India
  "+14155552671",  // USA
  "+447777123456", // UK
  "+81 90 1234 5678", // Japan
];

testPhoneNumbers.forEach((phoneNumber) => {
  const countryCode = getCountryCodeFromPhoneNumber(phoneNumber);
  console.log(`Phone number: ${phoneNumber}, Country Code: ${countryCode}`);
});

Salin selepas log masuk

Pertimbangan Penting:

  • Nombor telefon mesti dihuraikan dengan betul, dan ia harus mengandungi kod negara ( diikuti dengan digit). Jika nombor telefon dalam format tempatan (tanpa kod negara), anda perlu menentukan wilayah lalai (negara) semasa menghuraikan.

  • Wilayah lalai: Jika nombor telefon tidak mengandungi kod negara, anda boleh memberikan kod negara lalai menggunakan kaedah parse (cth., phoneUtil.parse(phoneNumber, 'IN' ) untuk India).

Kesimpulan:

  • Format E.164 biasanya merupakan pilihan terbaik untuk menyimpan nombor telefon di bahagian belakang kerana ia diiktiraf secara universal dan memudahkan pengesahan dan storan.
  • Menyimpan kod negara dan nombor tempatan secara berasingan boleh berguna dalam sistem setempat tetapi menambahkan kerumitan.
  • Gunakan alatan seperti libphonenumber untuk mengendalikan pengesahan nombor telefon, pemformatan dan penghuraian dengan cekap.

Atas ialah kandungan terperinci Cara terbaik untuk menyimpan nombor telefon dalam apl anda. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan