ทั้งหมด,
ฉันคิดว่าฉันแก้ไขแล้ว ทำงานกับไฟล์อินพุตปัจจุบันและมี 2 ฟังก์ชั่นต่อไปนี้ให้เสร็จสิ้น!
ฟังก์ชัน format_phone_number:
function format_phone_number ( $mynum, $mask ) {
$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;
}
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;
}
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;
}
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;
}
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;
}
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;
}
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;
}
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;
}
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;
}
return false;
}
ฟังก์ชัน validate_phone_number:
function validate_phone_number ( $phone ) {
$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)))$/';
$valid = array('format' => false,
'nanpa' => false,
'ext' => false,
'all' => false);
if ( preg_match ( $format_pattern, $phone, $matchset ) ) {
$valid['format'] = true;
}
if ( !$valid['format'] ) {
return false;
} else {
$components = array ( 'ac' => $matchset[1],
'xc' => $matchset[2],
'sn' => $matchset[3]
);
$numbers = array ( 'original' => $matchset[0],
'stripped' => substr(preg_replace('[\D]', '', $matchset[0]), 0, 10)
);
if(preg_match($nanpa_pattern, $numbers['stripped'])) {
$valid['nanpa'] = true;
}
if ( $valid['nanpa'] ) {
if ( !empty ( $components['xn'] ) ) {
if ( preg_match ( '/^[\d]{1,6}$/', $components['xn'] ) ) {
$valid['ext'] = true;
}
} else {
$valid['ext'] = true;
}
}
if ( $valid['ext'] ) {
$valid['all'] = true;
}
}
return $valid['all'];
}
สังเกตว่าฉันมีสิ่งนี้ในคลาส lib ดังนั้นการเรียก "self :: validate_phone_number" จากฟังก์ชัน / วิธีการแรก
บรรทัดประกาศ # 32 ของฟังก์ชัน "validate_phone_number" ที่ฉันเพิ่ม:
if ( !$valid['format'] ) {
return false;
} else {
เพื่อขอคืนสินค้าปลอมที่จำเป็นหากไม่ใช่หมายเลขโทรศัพท์ที่ถูกต้อง
ยังคงต้องทดสอบสิ่งนี้กับข้อมูลเพิ่มเติม แต่กำลังทำงานกับข้อมูลปัจจุบันด้วยรูปแบบปัจจุบันและฉันใช้สไตล์ '8' สำหรับชุดข้อมูลนี้โดยเฉพาะ
นอกจากนี้ฉันยังแสดงความคิดเห็นเกี่ยวกับตรรกะ "ส่วนขยาย" เนื่องจากฉันได้รับข้อผิดพลาดจากมันอยู่ตลอดเวลาโดยที่ฉันไม่มีข้อมูลนั้นในข้อมูลของฉัน