有一个包含电话号码的变量号码,并且号码前面有国家前缀,电话号码是动态的,可以是来自任何国家/地区的任何电话号码.
因此,我需要通过匹配变量中的某些字符(即电话号码前面的国家/地区前缀)与DB中的记录(国家/地区前缀将被提取到数组中)保存所有国家/地区前缀来获取电话号码的国家/地区.
样品:
$phoneVar = '4477809098888'; // uk - 44
$phoneVar = '15068094490'; // usa - 1
$phoneVar = '353669767954'; // ireland - 352
$phoneVar = '2348020098787'; // nigeria - 234
如果$phoneVar被分配了任何电话号码值,则需要能够从中获取国家/地区前缀.
像这样的东西:
echo getCountryPrefix($phoneVar, $countries_prefix_array);
使用substr很容易实现
// $countryPrefix = substr($phoneVar, 0, 3);
但是国家/地区的前缀长度不同.
很高兴能得到这方面的帮助.
解决方法:
好的,这是状态机的完美示例!
最简单的方法:
$prefixes = array('44' => 'UK', '1' => 'USA', '352' => 'IRELAND', '234' => 'NIGERIA');
preg_match('/^('.implode('|',array_keys($prefixes)).')/', $phoneVar, $matches);
echo $prefixes[$matches[0]];