백엔드에 전화번호를 저장할 때 효율성, 표준화, 검증 및 국제화를 고려하는 것이 중요합니다. 전화번호를 저장하는 가장 좋은 방법은 애플리케이션 요구 사항(예: 국제 지원, 유효성 검사 규칙, 형식 요구 사항)에 따라 달라지는 경우가 많습니다.
이 접근 방식은 국가 코드를 포함한 전체 전화번호를 국제 E.164 형식(국제적으로 인정되는 전화번호 형식)으로 저장합니다.
일관성: 전화번호를 E.164 형식으로 저장하면 다양한 사용자와 시스템에서 형식의 불일치를 방지할 수 있습니다.
검증: 전화번호가 올바른 형식이고 특정 국가에서 유효한지 확인하기 위해 libphonenumber(Google에서 사용)와 같은 라이브러리를 사용하여 전화번호를 쉽게 검증할 수 있습니다.
데이터베이스 스키마: 전화번호를 E.164 형식의 단일 문자열 필드로 저장합니다.
필드 유형: 문자열 또는 VARCHAR(데이터베이스에 따라 다름).
예: VARCHAR(15)(E.164에서는 최대 15자리까지 허용).
CREATE TABLE users ( id INT PRIMARY KEY, phone_number VARCHAR(15) NOT NULL );
이 접근 방식에서는 전화번호를 두 개의 필드로 분할합니다. 하나는 국가 코드용이고 다른 하나는 지역 번호용입니다. 이를 통해 현지화된 형식 지정에 더 많은 유연성을 제공하며 애플리케이션에서 지역별로 다른 전화 번호 동작(예: 유효성 검사 규칙, 형식 표시)이 필요한 경우 바람직할 수 있습니다.
CREATE TABLE users ( id INT PRIMARY KEY, phone_number VARCHAR(15) NOT NULL );
다음은 Node.js에서 유효성 검사를 위해 E.164 형식 및 libphonenumber로 전화번호를 처리하는 전체 예입니다.
CREATE TABLE users ( id INT PRIMARY KEY, country_code VARCHAR(5) NOT NULL, local_number VARCHAR(20) NOT NULL );
npm install google-libphonenumber
이 라이브러리를 사용하여 전화번호에서 국가 코드(예: 미국의 경우 US)를 검색하려면 getRegionCodeForNumber 함수를 사용할 수 있습니다. 이 함수는 전화번호(parseAndKeepRawInput 등을 사용하여 구문 분석해야 함)를 가져와 ISO 3166-1 alpha-2 형식(예: IN, US, GB 등)으로 국가 코드를 반환합니다.
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
parseAndKeepRawInput(전화번호):
이 방법은 전화번호를 구문 분석하고 원시 입력을 유지하는 데 사용됩니다. 즉, 다양한 형식(예: 공백, 대시 또는 괄호)의 입력을 처리할 수 있습니다.
getRegionCodeForNumber(번호):
이 함수는 구문 분석된 전화번호와 연결된 국가 코드(IN, US, GB 등의 ISO 3166-1 alpha-2 코드)를 반환합니다.
이는 국가별 전화번호 패턴의 내부 목록과 번호를 대조하여 수행됩니다.
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}`); });
전화번호는 올바르게 구문 분석되어야 하며 국가 코드(뒤에 숫자)가 포함되어야 합니다. 전화번호가 지역 형식(국가 코드 없음)인 경우 구문 분석 중에 기본 지역(국가)을 지정해야 합니다.
기본 지역: 전화번호에 국가 코드가 포함되어 있지 않으면 구문 분석 방법(예:phoneUtil.parse(phoneNumber, 'IN')을 사용하여 기본 국가 코드를 제공할 수 있습니다. ) 인도의 경우).
위 내용은 앱에 전화번호를 저장하는 가장 좋은 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!