SMS 앱을 작업 중이며 보낸 사람의 전화 번호를 +11234567890 에서 123-456-7890 으로 변환 할 수 있어야 MySQL 데이터베이스의 레코드와 비교할 수 있습니다 .
번호는 사이트의 다른 곳에서 사용하기 위해 후자의 형식으로 저장되며 많은 코드를 수정해야하므로 형식을 변경하지 않을 것입니다.
PHP로 어떻게해야합니까?
감사!
SMS 앱을 작업 중이며 보낸 사람의 전화 번호를 +11234567890 에서 123-456-7890 으로 변환 할 수 있어야 MySQL 데이터베이스의 레코드와 비교할 수 있습니다 .
번호는 사이트의 다른 곳에서 사용하기 위해 후자의 형식으로 저장되며 많은 코드를 수정해야하므로 형식을 변경하지 않을 것입니다.
PHP로 어떻게해야합니까?
감사!
답변:
$data = '+11234567890';
if( preg_match( '/^\+\d(\d{3})(\d{3})(\d{4})$/', $data, $matches ) )
{
$result = $matches[1] . '-' .$matches[2] . '-' . $matches[3];
return $result;
}
sprintf
또는`printf``? 누군가 나에게 설명해주세요. 나는 미국 전화 번호로만 작업하고 있으며 하위 문자열을 사용하여 출력 기능을 통해 실행하는 것이 가장 좋은 방법이라고 생각하지 않습니다.
이것은 현재 답변보다 더 많은 버전의 번호에서 작동하는 미국 전화 포맷터입니다.
$numbers = explode("\n", '(111) 222-3333
((111) 222-3333
1112223333
111 222-3333
111-222-3333
(111)2223333
+11234567890
1-8002353551
123-456-7890 -Hello!
+1 - 1234567890
');
foreach($numbers as $number)
{
print preg_replace('~.*(\d{3})[^\d]{0,7}(\d{3})[^\d]{0,7}(\d{4}).*~', '($1) $2-$3', $number). "\n";
}
다음은 정규식의 분석입니다.
Cell: +1 999-(555 0001)
.* zero or more of anything "Cell: +1 "
(\d{3}) three digits "999"
[^\d]{0,7} zero or up to 7 of something not a digit "-("
(\d{3}) three digits "555"
[^\d]{0,7} zero or up to 7 of something not a digit " "
(\d{4}) four digits "0001"
.* zero or more of anything ")"
업데이트 : 2015 년 3 월 11 일 {0,7}
대신{,7}
~.*(\d{3})[^\d]*(\d{3})[^\d]*(\d{4})(?:[ \D#\-]*(\d{3,6}))?.*~
.
(\d{3}) // 3 digits
[\d]
// 숫자가 아닌 문자
{,7}
업데이트 해야하는 정규식 일치가 변경된 것 같습니다 {0,7}
. 코드를 업데이트했습니다.
이 기능은 국제 (10 자리 이상), 비 국제 (10 자리) 또는 구식 (7 자리) 전화 번호를 포맷합니다. 10+, 10 또는 7 자리 이외의 숫자는 서식이 지정되지 않은 상태로 유지됩니다.
function formatPhoneNumber($phoneNumber) {
$phoneNumber = preg_replace('/[^0-9]/','',$phoneNumber);
if(strlen($phoneNumber) > 10) {
$countryCode = substr($phoneNumber, 0, strlen($phoneNumber)-10);
$areaCode = substr($phoneNumber, -10, 3);
$nextThree = substr($phoneNumber, -7, 3);
$lastFour = substr($phoneNumber, -4, 4);
$phoneNumber = '+'.$countryCode.' ('.$areaCode.') '.$nextThree.'-'.$lastFour;
}
else if(strlen($phoneNumber) == 10) {
$areaCode = substr($phoneNumber, 0, 3);
$nextThree = substr($phoneNumber, 3, 3);
$lastFour = substr($phoneNumber, 6, 4);
$phoneNumber = '('.$areaCode.') '.$nextThree.'-'.$lastFour;
}
else if(strlen($phoneNumber) == 7) {
$nextThree = substr($phoneNumber, 0, 3);
$lastFour = substr($phoneNumber, 3, 4);
$phoneNumber = $nextThree.'-'.$lastFour;
}
return $phoneNumber;
}
전화 번호가 항상 정확한 형식이라고 가정하면 다음 스 니펫을 사용할 수 있습니다.
$from = "+11234567890";
$to = sprintf("%s-%s-%s",
substr($from, 2, 3),
substr($from, 5, 3),
substr($from, 8));
전화 번호는 어렵습니다. 보다 강력하고 국제적인 솔루션을 위해 Google의 libphonenumber 라이브러리 의 잘 관리 된 PHP 포트 를 권장 합니다.
이렇게 사용하면
use libphonenumber\NumberParseException;
use libphonenumber\PhoneNumber;
use libphonenumber\PhoneNumberFormat;
use libphonenumber\PhoneNumberUtil;
$phoneUtil = PhoneNumberUtil::getInstance();
$numberString = "+12123456789";
try {
$numberPrototype = $phoneUtil->parse($numberString, "US");
echo "Input: " . $numberString . "\n";
echo "isValid: " . ($phoneUtil->isValidNumber($numberPrototype) ? "true" : "false") . "\n";
echo "E164: " . $phoneUtil->format($numberPrototype, PhoneNumberFormat::E164) . "\n";
echo "National: " . $phoneUtil->format($numberPrototype, PhoneNumberFormat::NATIONAL) . "\n";
echo "International: " . $phoneUtil->format($numberPrototype, PhoneNumberFormat::INTERNATIONAL) . "\n";
} catch (NumberParseException $e) {
// handle any errors
}
다음과 같은 출력이 표시됩니다.
Input: +12123456789
isValid: true
E164: +12123456789
National: (212) 345-6789
International: +1 212-345-6789
E164
중복 확인을 위해 형식을 사용하는 것이 좋습니다 . 또한 번호가 실제 휴대폰 번호인지 (사용 PhoneNumberUtil::getNumberType()
) 또는 미국 번호 (사용 PhoneNumberUtil::getRegionCodeForNumber()
)인지 확인할 수도 있습니다.
보너스로 라이브러리는 거의 모든 입력을 처리 할 수 있습니다. 예를 들어 1-800-JETBLUE
위의 코드 를 실행하도록 선택 하면
Input: 1-800-JETBLUE
isValid: true
E164: +18005382583
National: (800) 538-2583
International: +1 800-538-2583
Neato.
미국 이외의 국가에서도 잘 작동합니다. parse()
인수 에 다른 ISO 국가 코드를 사용하십시오 .
number_formatted
데이터베이스에 열을 추가 하고 형식이 지정된 번호를 수동으로 입력 하기로 결정했습니다 . 그래도 libphonenumber
서식이 지정된 숫자를 생성하기 위해 로컬에서 여전히 사용 하지만 내 작은 프로젝트에 이러한 거대한 라이브러리를 포함하는 것은 과잉입니다.
지역 코드를 선택적 구성 요소로 사용하고 확장에 필요한 구분 기호 및 정규식 주석을 사용하는 미국 전용 솔루션은 다음과 같습니다.
function formatPhoneNumber($s) {
$rx = "/
(1)?\D* # optional country code
(\d{3})?\D* # optional area code
(\d{3})\D* # first three
(\d{4}) # last four
(?:\D+|$) # extension delimiter or EOL
(\d*) # optional extension
/x";
preg_match($rx, $s, $matches);
if(!isset($matches[0])) return false;
$country = $matches[1];
$area = $matches[2];
$three = $matches[3];
$four = $matches[4];
$ext = $matches[5];
$out = "$three-$four";
if(!empty($area)) $out = "$area-$out";
if(!empty($country)) $out = "+$country-$out";
if(!empty($ext)) $out .= "x$ext";
// check that no digits were truncated
// if (preg_replace('/\D/', '', $s) != preg_replace('/\D/', '', $out)) return false;
return $out;
}
다음은이를 테스트하는 스크립트입니다.
$numbers = [
'3334444',
'2223334444',
'12223334444',
'12223334444x5555',
'333-4444',
'(222)333-4444',
'+1 222-333-4444',
'1-222-333-4444ext555',
'cell: (222) 333-4444',
'(222) 333-4444 (cell)',
];
foreach($numbers as $number) {
print(formatPhoneNumber($number)."<br>\r\n");
}
다음은 유럽 (또는 스웨덴어?) 방식으로 7 ~ 10 자리 전화 번호 형식을 지정하는 간단한 기능입니다.
function formatPhone($num) {
$num = preg_replace('/[^0-9]/', '', $num);
$len = strlen($num);
if($len == 7) $num = preg_replace('/([0-9]{2})([0-9]{2})([0-9]{3})/', '$1 $2 $3', $num);
elseif($len == 8) $num = preg_replace('/([0-9]{3})([0-9]{2})([0-9]{3})/', '$1 - $2 $3', $num);
elseif($len == 9) $num = preg_replace('/([0-9]{3})([0-9]{2})([0-9]{2})([0-9]{2})/', '$1 - $2 $3 $4', $num);
elseif($len == 10) $num = preg_replace('/([0-9]{3})([0-9]{2})([0-9]{2})([0-9]{3})/', '$1 - $2 $3 $4', $num);
return $num;
}
바퀴를 재발 명하지 마십시오! 이 놀라운 라이브러리 가져 오기 :
https://github.com/giggsey/libphonenumber-for-php
$defaultCountry = 'SE'; // Based on the country of the user
$phoneUtil = PhoneNumberUtil::getInstance();
$swissNumberProto = $phoneUtil->parse($phoneNumber, $defaultCountry);
return $phoneUtil->format($swissNumberProto, PhoneNumberFormat::INTERNATIONAL);
국제 전화 번호를 구문 분석, 서식 지정 및 확인하기위한 Google의 라이브러리를 기반으로합니다 : https://github.com/google/libphonenumber
RegEx보다 빠릅니다.
$input = "0987654321";
$output = substr($input, -10, -7) . "-" . substr($input, -7, -4) . "-" . substr($input, -4);
echo $output;
다음과 같이 시도하십시오.
preg_replace('/\d{3}/', '$0-', str_replace('.', null, trim($number)), 2);
이것은 달러 (A $) 번호를 취할 것입니다 8881112222
및 변환 888-111-2222
. 도움이 되었기를 바랍니다.
'.'
업데이트 '-'
하거나 제거해야합니다. 특정 사용 사례가 직면했기 때문에 포함되었습니다. 아주 적은 노력으로 그것을 변환 preg_replace('/\d{3}/', '$0-', substr($number, 2))
하고 질문에 직접 답할 수있었습니다.
또 다른 옵션-구성에서 형식을 수신하도록 쉽게 업데이트됩니다.
$numbers = explode("\n", '(111) 222-3333
((111) 222-3333
1112223333
111 222-3333
111-222-3333
(111)2223333
+11234567890
1-8002353551
123-456-7890 -Hello!
+1 - 1234567890
');
foreach( $numbers AS $number ){
echo comMember_format::phoneNumber($number) . '<br>';
}
// ************************************************************************
// Format Phone Number
public function phoneNumber( $number ){
$txt = preg_replace('/[\s\-|\.|\(|\)]/','',$number);
$format = '[$1?$1 :][$2?($2):x][$3: ]$4[$5: ]$6[$7? $7:]';
if( preg_match('/^(.*)(\d{3})([^\d]*)(\d{3})([^\d]*)(\d{4})([^\d]{0,1}.*)$/', $txt, $matches) ){
$result = $format;
foreach( $matches AS $k => $v ){
$str = preg_match('/\[\$'.$k.'\?(.*?)\:(.*?)\]|\[\$'.$k.'\:(.*?)\]|(\$'.$k.'){1}/', $format, $filterMatch);
if( $filterMatch ){
$result = str_replace( $filterMatch[0], (!isset($filterMatch[3]) ? (strlen($v) ? str_replace( '$'.$k, $v, $filterMatch[1] ) : $filterMatch[2]) : (strlen($v) ? $v : (isset($filterMatch[4]) ? '' : (isset($filterMatch[3]) ? $filterMatch[3] : '')))), $result );
}
}
return $result;
}
return $number;
}
모두,
내가 고친 것 같아요. 현재 입력 파일에 대해 작업하고이 작업을 수행하려면 다음 두 가지 기능이 있습니다!
function format_phone_number :
function format_phone_number ( $mynum, $mask ) {
/*********************************************************************/
/* Purpose: Return either masked phone number or false */
/* Masks: Val=1 or xxx xxx xxxx */
/* Val=2 or xxx xxx.xxxx */
/* Val=3 or xxx.xxx.xxxx */
/* Val=4 or (xxx) xxx xxxx */
/* Val=5 or (xxx) xxx.xxxx */
/* Val=6 or (xxx).xxx.xxxx */
/* Val=7 or (xxx) xxx-xxxx */
/* Val=8 or (xxx)-xxx-xxxx */
/*********************************************************************/
$val_num = self::validate_phone_number ( $mynum );
if ( !$val_num && !is_string ( $mynum ) ) {
echo "Number $mynum is not a valid phone number! \n";
return false;
} // end if !$val_num
if ( ( $mask == 1 ) || ( $mask == 'xxx xxx xxxx' ) ) {
$phone = preg_replace('~.*(\d{3})[^\d]*(\d{3})[^\d]*(\d{4}).*~',
'$1 $2 $3'." \n", $mynum);
return $phone;
} // end if $mask == 1
if ( ( $mask == 2 ) || ( $mask == 'xxx xxx.xxxx' ) ) {
$phone = preg_replace('~.*(\d{3})[^\d]*(\d{3})[^\d]*(\d{4}).*~',
'$1 $2.$3'." \n", $mynum);
return $phone;
} // end if $mask == 2
if ( ( $mask == 3 ) || ( $mask == 'xxx.xxx.xxxx' ) ) {
$phone = preg_replace('~.*(\d{3})[^\d]*(\d{3})[^\d]*(\d{4}).*~',
'$1.$2.$3'." \n", $mynum);
return $phone;
} // end if $mask == 3
if ( ( $mask == 4 ) || ( $mask == '(xxx) xxx xxxx' ) ) {
$phone = preg_replace('~.*(\d{3})[^\d]*(\d{3})[^\d]*(\d{4}).*~',
'($1) $2 $3'." \n", $mynum);
return $phone;
} // end if $mask == 4
if ( ( $mask == 5 ) || ( $mask == '(xxx) xxx.xxxx' ) ) {
$phone = preg_replace('~.*(\d{3})[^\d]*(\d{3})[^\d]*(\d{4}).*~',
'($1) $2.$3'." \n", $mynum);
return $phone;
} // end if $mask == 5
if ( ( $mask == 6 ) || ( $mask == '(xxx).xxx.xxxx' ) ) {
$phone = preg_replace('~.*(\d{3})[^\d]*(\d{3})[^\d]*(\d{4}).*~',
'($1).$2.$3'." \n", $mynum);
return $phone;
} // end if $mask == 6
if ( ( $mask == 7 ) || ( $mask == '(xxx) xxx-xxxx' ) ) {
$phone = preg_replace('~.*(\d{3})[^\d]*(\d{3})[^\d]*(\d{4}).*~',
'($1) $2-$3'." \n", $mynum);
return $phone;
} // end if $mask == 7
if ( ( $mask == 8 ) || ( $mask == '(xxx)-xxx-xxxx' ) ) {
$phone = preg_replace('~.*(\d{3})[^\d]*(\d{3})[^\d]*(\d{4}).*~',
'($1)-$2-$3'." \n", $mynum);
return $phone;
} // end if $mask == 8
return false; // Returns false if no conditions meet or input
} // end function format_phone_number
함수 validate_phone_number :
function validate_phone_number ( $phone ) {
/*********************************************************************/
/* Purpose: To determine if the passed string is a valid phone */
/* number following one of the establish formatting */
/* styles for phone numbers. This function also breaks */
/* a valid number into it's respective components of: */
/* 3-digit area code, */
/* 3-digit exchange code, */
/* 4-digit subscriber number */
/* and validates the number against 10 digit US NANPA */
/* guidelines. */
/*********************************************************************/
$format_pattern = '/^(?:(?:\((?=\d{3}\)))?(\d{3})(?:(?<=\(\d{3})\))'.
'?[\s.\/-]?)?(\d{3})[\s\.\/-]?(\d{4})\s?(?:(?:(?:'.
'(?:e|x|ex|ext)\.?\:?|extension\:?)\s?)(?=\d+)'.
'(\d+))?$/';
$nanpa_pattern = '/^(?:1)?(?(?!(37|96))[2-9][0-8][0-9](?<!(11)))?'.
'[2-9][0-9]{2}(?<!(11))[0-9]{4}(?<!(555(01([0-9]'.
'[0-9])|1212)))$/';
// Init array of variables to false
$valid = array('format' => false,
'nanpa' => false,
'ext' => false,
'all' => false);
//Check data against the format analyzer
if ( preg_match ( $format_pattern, $phone, $matchset ) ) {
$valid['format'] = true;
}
//If formatted properly, continue
//if($valid['format']) {
if ( !$valid['format'] ) {
return false;
} else {
//Set array of new components
$components = array ( 'ac' => $matchset[1], //area code
'xc' => $matchset[2], //exchange code
'sn' => $matchset[3] //subscriber number
);
// $components = array ( 'ac' => $matchset[1], //area code
// 'xc' => $matchset[2], //exchange code
// 'sn' => $matchset[3], //subscriber number
// 'xn' => $matchset[4] //extension number
// );
//Set array of number variants
$numbers = array ( 'original' => $matchset[0],
'stripped' => substr(preg_replace('[\D]', '', $matchset[0]), 0, 10)
);
//Now let's check the first ten digits against NANPA standards
if(preg_match($nanpa_pattern, $numbers['stripped'])) {
$valid['nanpa'] = true;
}
//If the NANPA guidelines have been met, continue
if ( $valid['nanpa'] ) {
if ( !empty ( $components['xn'] ) ) {
if ( preg_match ( '/^[\d]{1,6}$/', $components['xn'] ) ) {
$valid['ext'] = true;
} // end if if preg_match
} else {
$valid['ext'] = true;
} // end if if !empty
} // end if $valid nanpa
//If the extension number is valid or non-existent, continue
if ( $valid['ext'] ) {
$valid['all'] = true;
} // end if $valid ext
} // end if $valid
return $valid['all'];
} // end functon validate_phone_number
lib 클래스에이 기능이 있으므로 첫 번째 함수 / 메서드에서 "self :: validate_phone_number"호출이 수행됩니다.
다음을 추가 한 "validate_phone_number"함수의 32 행에 주목하십시오.
if ( !$valid['format'] ) {
return false;
} else {
전화 번호가 유효하지 않은 경우 허위 신고가 필요합니다.
더 많은 데이터에 대해 이것을 테스트해야하지만 현재 형식으로 현재 데이터에서 작업하고 있으며이 특정 데이터 배치에 대해 스타일 '8'을 사용하고 있습니다.
또한 지속적으로 오류가 발생하면서 "확장"로직에 대해 주석을 달았는데, 데이터에 해당 정보가 없음을 알았습니다.
이것은 7, 10 및 11 자리를 취하고 추가 문자를 제거하고 문자열을 오른쪽에서 왼쪽으로 이동하여 대시를 추가합니다. 대시를 공백이나 점으로 변경합니다.
$raw_phone = preg_replace('/\D/', '', $raw_phone);
$temp = str_split($raw_phone);
$phone_number = "";
for ($x=count($temp)-1;$x>=0;$x--) {
if ($x === count($temp) - 5 || $x === count($temp) - 8 || $x === count($temp) - 11) {
$phone_number = "-" . $phone_number;
}
$phone_number = $temp[$x] . $phone_number;
}
echo $phone_number;
OP가 123-456-7890 형식을 요청한다는 것을 알고 있지만 John Dul의 답변 에 따라 전화 번호를 괄호 형식으로 반환하도록 수정했습니다 (예 : (123) 456-7890). 이것은 7 자리와 10 자리 숫자 만 처리합니다.
function format_phone_string( $raw_number ) {
// remove everything but numbers
$raw_number = preg_replace( '/\D/', '', $raw_number );
// split each number into an array
$arr_number = str_split($raw_number);
// add a dummy value to the beginning of the array
array_unshift( $arr_number, 'dummy' );
// remove the dummy value so now the array keys start at 1
unset($arr_number[0]);
// get the number of numbers in the number
$num_number = count($arr_number);
// loop through each number backward starting at the end
for ( $x = $num_number; $x >= 0; $x-- ) {
if ( $x === $num_number - 4 ) {
// before the fourth to last number
$phone_number = "-" . $phone_number;
}
else if ( $x === $num_number - 7 && $num_number > 7 ) {
// before the seventh to last number
// and only if the number is more than 7 digits
$phone_number = ") " . $phone_number;
}
else if ( $x === $num_number - 10 ) {
// before the tenth to last number
$phone_number = "(" . $phone_number;
}
// concatenate each number (possibly with modifications) back on
$phone_number = $arr_number[$x] . $phone_number;
}
return $phone_number;
}
내 의견은 다음과 같습니다.
$phone='+11234567890';
$parts=sscanf($phone,'%2c%3c%3c%4c');
print "$parts[1]-$parts[2]-$parts[3]";
// 123-456-7890
이 sscanf
함수는 첫 번째 문자열에서 문자를 해석하는 방법을 알려주는 형식 문자열을 두 번째 매개 변수로 사용합니다. 이 경우 2 자 ( %2c
), 3 자, 3 자, 4자를 의미합니다.
일반적으로 sscanf
함수에는 추출 된 데이터를 캡처하기위한 변수도 포함됩니다. 그렇지 않은 경우 데이터는 내가 호출 한 배열로 반환됩니다 $parts
.
print
문은 보간 된 문자열을 출력합니다. $part[0]
무시됩니다.
유사한 기능을 사용하여 호주 전화 번호 형식을 지정했습니다.
전화 번호 저장의 관점에서 볼 때 :
영국 전화 형식
제가 개발 한 애플리케이션의 경우 사람이 읽을 수있는 형식으로 전화 번호를 '올바르게'입력했지만 '-' '/' '+44'등과 같은 다양한 임의의 문자를 삽입하는 것을 발견했습니다. 문제는 클라우드 앱이 대화가 필요한 것은 형식에 대해 매우 구체적이었습니다. 정규식을 사용하는 대신 (사용자에게는 실망 스러울 수 있음) 입력 된 숫자를 지속성 모듈에서 처리하기 전에 올바른 형식으로 처리하는 객체 클래스를 만들었습니다.
출력의 형식은 모든 수신 소프트웨어가 출력을 정수가 아닌 텍스트로 해석하고 (즉시 선행 0이 손실 됨) 형식이 British Telecoms 와 일치하도록합니다. 숫자 형식에 대한 지침-긴 숫자를 작고 쉽게 기억할 수있는 그룹으로 나누어 사람의 기억력을 향상시킵니다.
+441234567890 생성 (01234)
567890 02012345678 생성 (020) 1234 5678
1923123456 생성 (01923)
123456 01923123456 생성 (01923)
123456 01923 안녕하세요 이것은 텍스트입니다 123456 생성 (01923) 123456
괄호로 묶인 번호의 교환 세그먼트의 중요성은 영국 및 대부분의 다른 국가에서 교환 세그먼트를 생략하고 동일한 교환에있는 번호 간의 통화를 할 수 있다는 것입니다. 그러나 07, 08 및 09 시리즈 전화 번호에는 적용되지 않습니다.
더 효율적인 솔루션이 있다고 확신하지만이 솔루션은 매우 신뢰할 수있는 것으로 입증되었습니다. 끝에 teleNum 함수를 추가하여 더 많은 형식을 쉽게 조정할 수 있습니다.
프로시 저는 호출 스크립트에서 호출되므로
$telephone = New Telephone;
$formattedPhoneNumber = $telephone->toIntegerForm($num)
`
<?php
class Telephone
{
public function toIntegerForm($num) {
/*
* This section takes the number, whatever its format, and purifies it to just digits without any space or other characters
* This ensures that the formatter only has one type of input to deal with
*/
$number = str_replace('+44', '0', $num);
$length = strlen($number);
$digits = '';
$i=0;
while ($i<$length){
$digits .= $this->first( substr($number,$i,1) , $i);
$i++;
}
if (strlen($number)<10) {return '';}
return $this->toTextForm($digits);
}
public function toTextForm($number) {
/*
* This works on the purified number to then format it according to the group code
* Numbers starting 01 and 07 are grouped 5 3 3
* Other numbers are grouped 3 4 4
*
*/
if (substr($number,0,1) == '+') { return $number; }
$group = substr($number,0,2);
switch ($group){
case "02" :
$formattedNumber = $this->teleNum($number, 3, 4); // If number commences '02N' then output will be (02N) NNNN NNNN
break;
default :
$formattedNumber = $this->teleNum($number, 5, 3); // Otherwise the ooutput will be (0NNNN) NNN NNN
}
return $formattedNumber;
}
private function first($digit,$position){
if ($digit == '+' && $position == 0) {return $digit;};
if (!is_numeric($digit)){
return '';
}
if ($position == 0) {
return ($digit == '0' ) ? $digit : '0'.$digit;
} else {
return $digit;
}
}
private function teleNum($number,$a,$b){
/*
* Formats the required output
*/
$c=strlen($number)-($a+$b);
$bit1 = substr($number,0,$a);
$bit2 = substr($number,$a,$b);
$bit3 = substr($number,$a+$b,$c);
return '('.$bit1.') '.$bit2." ".$bit3;
}
}
형식을 변경할 수있는 substr 기반 함수를 살펴보십시오.
function phone(string $in): string
{
$FORMAT_PHONE = [1,3,3,4];
$result =[];
$position = 0;
foreach ($FORMAT_PHONE as $key => $item){
$result[] = substr($in, $position, $item);
$position += $item;
}
return '+'.implode('-',$result);
}