The giggsey/libphonenumber-for-php is a PHP library designed to parse, format, store and validate international phone numbers. Based on Google's libphonenumber, it provides a comprehensive set of tools for dealing with phone numbers, including functionalities such as geolocation, timezone mapping, and carrier mapping for phone numbers. This library supports a wide range of PHP versions from 5.3 to 8.2 and requires the PECL mbstring extension for operation.
You can use giggsey/libphonenumber-for-php primarily through its PhoneNumberUtil
class. Here's how to parse and validate a Swiss phone number, for instance:
$swissNumberStr = "044 668 18 00";
$phoneUtil = \libphonenumber\PhoneNumberUtil::getInstance();
try {
$swissNumberProto = $phoneUtil->parse($swissNumberStr, "CH");
var_dump($swissNumberProto);
} catch (\libphonenumber\NumberParseException $e) {
var_dump($e);
}
$isValid = $phoneUtil->isValidNumber($swissNumberProto);
var_dump($isValid); // should output true if the number is valid
You can also format the parsed phone number in different ways:
echo $phoneUtil->format($swissNumberProto, \libphonenumber\PhoneNumberFormat::E164); // outputs "+41446681800"
echo $phoneUtil->format($swissNumberProto, \libphonenumber\PhoneNumberFormat::NATIONAL); // outputs "044 668 18 00"
echo $phoneUtil->format($swissNumberProto, \libphonenumber\PhoneNumberFormat::INTERNATIONAL); // outputs "+41 44 668 18 00"
Mapping a phone number to its carrier or timezone is as easy as:
$phoneUtil = \libphonenumber\PhoneNumberUtil::getInstance();
$swissNumberProto = $phoneUtil->parse("798765432", "CH");
$carrierMapper = \libphonenumber\PhoneNumberToCarrierMapper::getInstance();
echo $carrierMapper->getNameForNumber($swissNumberProto, "en"); // outputs "Swisscom"
$timeZoneMapper = \libphonenumber\PhoneNumberToTimeZonesMapper::getInstance();
$timeZones = $timeZoneMapper->getTimeZonesForNumber($swissNumberProto); // returns array("Europe/Zurich")
The official documentation for the giggsey/libphonenumber-for-php library can be found in the GitHub repository. It includes comprehensive guides and usage examples for each of the library's components, such as PhoneNumber Util, ShortNumber Info, Phone Number Geolocation, and many more. These documents serve as detailed guides to getting the most out of the libphonenumber for PHP library.