mobile-country-code - MSISDN国家代码检测

标签 mobile-country-code msisdn

如何从以下 MSISDN 中检测国家代码?

塞浦路斯 (+357XXXXXXXX) -- 11 位数字

芬兰 (+358XXXXXXXXXX) -- 13 位数字

塞尔维亚 (+381XXXXXXX) -- 10 位数字

不同国家的国家代码和MSISDN中的位数不同,因此无法从整个数字中单独匹配国家代码。

那么,如何从特定的 MSISDN 获取国家代码?

最佳答案

如果数据以固定格式存在:{country_code} {space} {phone_digits},您可以轻松地使用字符串操作(正则表达式、拆分等)来获取国家代码部分.要确定该代码代表哪个国家/地区,您应该将其与已知国家/地区代码列表进行匹配 - 将这些代码存储在您的数据库中或使用 Web 服务进行验证。

一种可能的方法是从数据库中获取国家代码,然后手动比较找到匹配项的位置 - 以防格式不一致。这可能容易出错,因为国家/地区代码的长度也可能不同,您可能会匹配错误的代码。如果没有其他选择,一种多少可以接受的方法是首先匹配最长的代码,然后匹配较短的代码——但不能保证匹配无效。要完全避免该问题,请考虑下一个建议:

如果您可以控制电话号码的保存方式(在您的数据库或您使用的任何存储中),我建议您将国家/地区代码存储在单独的字段中。对于 SQL 数据库,这意味着您有一列用于国家代码,另一列用于电话号码。然后,您可以绝对确定地轻松提取国家/地区代码,并以您喜欢的任何方式对其进行处理。


从评论中可以看出,所讨论的格式是您希望您的 api 客户端提供的格式。如果是这种情况,您应该尝试对格式施加一些约束 - 让客户端将国家/地区代码作为单独的参数传递,或者使用合适的分隔符。如果是这样,您最终将解析代码并确定国家/地区。是否符合所需的格式取决于客户。

关于mobile-country-code - MSISDN国家代码检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30568564/

相关文章:

javascript - 在 FirefoxOS 中获取 msisdn

android - MSISDN : Is it a SIM Card Data? 为什么所有提供的功能(来自黑莓和安卓)获取 MSISDN 都不可靠?

iphone - 如何在 iOS 中以编程方式将 "Country code"转换为 "Mobile Country Code"?

flutter - 如何在flutter中根据国家/地区代码格式化手机号码

ios - 通过代码获取MSISDN号码

javascript - 如何在 Firefox 操作系统上获取 MSISDN

mobile - 使用浏览器检测 MSISDN(手机号码)

安卓 MCC 和 MNC

PHP - 正则表达式匹配带或不带国家代码的电话号码