$phoneUtil = PhoneNumberUtil::getInstance();
$number = $phoneUtil->parse("16502530000", "US");
$nationalSignificantNumber = $phoneUtil->getNationalSignificantNumber($number);
$areaCodeLength = $phoneUtil->getLengthOfGeographicalAreaCode($number);
if ($areaCodeLength > 0)
{
$areaCode = substr($nationalSignificantNumber, 0,$areaCodeLength);
$subscriberNumber = substr($nationalSignificantNumber, $areaCodeLength);
} else {
$areaCode = "";
$subscriberNumber = $nationalSignificantNumber;
}
N.B.: area code is a very ambiguous concept, so the I18N team generally recommends against
using it for most purposes, but recommends using the more general {@code nationalNumber}
instead. Read the following carefully before deciding to use this method:
- geographical area codes change over time, and this method honors those changes; therefore, it doesn't guarantee the stability of the result it produces.
- subscriber numbers may not be diallable from all devices (notably mobile devices, which typically requires the full national_number to be dialled in most regions).
- most non-geographical numbers have no area codes, including numbers from non-geographical entities
- some geographical numbers have no area codes.
public getLengthOfGeographicalAreaCode ( |
||
$number | PhoneNumber object for which clients want to know the length of the area code. | |
return | integer | the length of area code of the PhoneNumber object passed in. |