如何从数字php中爆炸国家代码,我需要1-3个字符来自国家验证。我有( code => country)
的数组,我有脚本示例,但它只有在我爆炸1个字符时才有效,但国家代码也可以是2或3个字符。我知道我可以通过$number = explode(" ", 1 777777);
进行爆炸,但我需要完整的数字而没有额外的符号或空格。
$number = "1777777";
$we = substr($number, 0, 2);
$countrys = array(
'1' => 'us',
'2' => 'uk',
'3' => 'de',
'44' => 'fi', // dont work if 2 characters..
'123' => 'no' // dont work if 3 characters..
);
$array = "$we";
echo $country = $countrys[$array[0]];
echo "<br>country";
我如何修改此代码?谢谢!或任何其他建议?
答案 0 :(得分:2)
我认为,如果数字与123777777相同,则国家/地区代码将被视为123
,而不是12
或1
,如果1
,{{1 }和12
存在。
在这种情况下,首先检查123
数组的前3位数字。如果没有找到,则继续检查前2位,依此类推。
countrys
答案 1 :(得分:0)
使用krsort
对数组进行排序(最长的数字)。在这种情况下,将在“1”之前检查“123”。然后,您可以简单地遍历您的阵列并检查该号码是否以国家/地区的号码开头。如果匹配,请将国家/地区代码保存到变量:
$number = '123777777';
$countrys = array(
'1' => 'us',
'2' => 'uk',
'3' => 'de',
'44' => 'fi',
'123' => 'no'
);
// sort the array by key, descending
krsort($countrys, SORT_NUMERIC);
// iterate over all countries
foreach ($countrys as $we => $ccode) {
// if number begins with current number
if (strpos($number, '' . $we) === 0) {
// store country code and break the loop
$country = $ccode;
break;
}
}
echo 'country: ' . $country; // expected: "no"
答案 2 :(得分:0)
在您的代码中,您始终将$countrys
中的第一个国家/地区分配给$country
。所以你总是会以我们结束。
您应该从您的电话号码中获取前3个,2个或1个数字,然后检查是否array key exists,而不是这样做。如果是,则将其用作数组的查找索引。
这是一个伪代码,供您开始使用:
perform a loop to get the first 3, 2, and 1 digit(s) from the phone number:
// Order is important as you want to match '123' before you match '1'
Check if the array key for the digit exists in the $countrys
If yes, get the country name and quit the loop
If not, go to the next less digit
If the key is found:
Print the country name
Else:
Print the country is not found
以下是您如何为3位数执行此操作的部分代码。您只需添加循环(例如for-loop)即可简化您的工作。
$number = "123777777";
// Add your loop here to check for 3, 2, 1 digit
$we = substr($number, 0, 3);
$countrys = array(
'1' => 'us',
'2' => 'uk',
'3' => 'de',
'44' => 'fi',
'123' => 'no'
);
$array = "$we"; // You don't need this
if (array_key_exists ($we, $countrys))
{
// Remember to break out of your loop when the country is found
$country = $countrys[$we];
}
else
{
$country = "Non in list";
}
// End your loop here
echo "${we} is ${country}\n";