Spaces:
No application file
No application file
namespace Mautic\CoreBundle\Helper; | |
use libphonenumber\PhoneNumberFormat; | |
use libphonenumber\PhoneNumberUtil; | |
class PhoneNumberHelper | |
{ | |
/** | |
* @param int $format | |
* | |
* @return string | |
*/ | |
public function format($number, $format = PhoneNumberFormat::E164) | |
{ | |
$phoneUtil = PhoneNumberUtil::getInstance(); | |
$phoneNumber = $phoneUtil->parse($number, 'US'); | |
return $phoneUtil->format($phoneNumber, $format); | |
} | |
public function getFormattedNumberList($number): array | |
{ | |
return array_unique( | |
[ | |
$number, | |
$this->format($number, PhoneNumberFormat::E164), | |
$this->formatNumericalNational($number), | |
$this->format($number, PhoneNumberFormat::NATIONAL), | |
$this->formatDelimitedNational($number), | |
$this->format($number, PhoneNumberFormat::INTERNATIONAL), | |
$this->formatNumericalInternational($number), | |
$this->formatDelimitedNational($number, '.'), | |
] | |
); | |
} | |
public function formatNumericalInternational($number): ?string | |
{ | |
return preg_replace('/[^0-9]/', '', $this->format($number, PhoneNumberFormat::INTERNATIONAL)); | |
} | |
public function formatNumericalNational($number): ?string | |
{ | |
return preg_replace('/[^0-9]/', '', $this->format($number, PhoneNumberFormat::NATIONAL)); | |
} | |
/** | |
* @param string $number | |
* @param string $delimiter | |
*/ | |
public function formatDelimitedNational($number, $delimiter = '-'): ?string | |
{ | |
$national = $this->format($number, PhoneNumberFormat::NATIONAL); | |
$national = str_replace([') ', '-'], $delimiter, $national); | |
return preg_replace('/[^0-9'.$delimiter.']/', '', $national); | |
} | |
} | |