当前位置: 首页 > 知识库问答 >
问题:

从电话号码确定国家

冀子石
2023-03-14

我看到了一些与我要求的相似的问题,但似乎没有什么符合要求的。

我处于需要处理通话记录并使用电话号码确定国家的位置。拨打的号码可以是任何国家,例如:

44 7899455120-英国

34 965791845-西班牙

355 788415235-阿尔巴尼亚

显然,如果所有的呼叫代码都是两位数的话,这个世界将是美好的,但事实并非如此。目前,我有一个数据库,里面有国家及其相关代码,为了匹配,我需要有效地取数字的第一位,例如英国的4,并对数据库进行查询,例如:

SELECT * from countries WHERE code LIKE '4%'

例如,这可能会给我20个结果。所以我再次循环并说

SELECT * from countries WHERE code LIKE '44%'

这可能会给我一个结果,现在我可以确定它是英国。然而,有些代码(如阿尔巴尼亚代码)是三位数的,需要更多的循环和数据库调用。这似乎是相当初级和低效的,但我想不出另一种方法来实现这一点。我意识到对一个数据库的三次呼叫似乎不多,但如果你有1000个呼叫要处理,它们很快就会加起来。

请看以下问题:

什么正则表达式将匹配有效的国际电话号码?

关于根据国家代码验证数字,似乎有一些很好的信息,但关于根据数字确定国家代码的信息并不多。任何关于清洁方法的建议都将不胜感激。

为清晰起见,手机中会显示空格

共有3个答案

乌骏
2023-03-14

在您的系统中,每个电话号码在国家代码后都有空格,所以您可以使用它来确定国家。

>

  • 创建一个包含所有国家代码的表。雷克

    id |国家|代码

    1|土耳其|90

    2|西班牙|34

    (有一张桌子给你:http://erikastokes.com/mysql-help/country.sql.txt )

    而不是爆出你的电话号码。Delimeter为空白“”。

    $phoneNumber = "355 788415235";
    
    $countryCode = explode(" ",$phoneNumber); // it divides phone number to two parts.
    $countryCode = $countryCode[0]; // it returns 355. We write index 0 because country code is first part.
    //Now you can call your country by country code.
    
    $sqlQuery  ="SELECT country FROM yourTableName WHERE code = '$countryCode' ";
    
    ...
    
    //it will works like a charm. Because i currently using this.
    

  • 万俟招
    2023-03-14

    国家代码中没有重叠的歧义。含义:国家代码11是非法的,因为1分配给北美。同样,20是埃及,没有其他以20开头的国家代码。以21开头的国家代码都是3位数。

    由于没有重叠歧义,您可以在一次查询中直接搜索电话号码12125551212的国家代码,如下所示:

    select country
         , code
      from countrycodes
     where code in ('121', '12', '1')
    

    同样,没有国家代码121或12,因此唯一匹配的标准是1。

    卫振
    2023-03-14

    存在一个库,它将解析一串数字并将其重新格式化为国际标准(类似于4402081231234到“442081231234”的数字)。如果号码中嵌入了国家代码,它还将从号码中返回电话号码区域“GB”或“US”。

    https://github.com/googlei18n/libphonenumber最初的库是Java,但也有Javascript、Python、Ruby和PHP等版本。

     类似资料:
    • 我正在使用google库将国际电话号码转换为国家号码。 的一个示例是919744012345 我期望的是“9744012345”(请参阅印度的移动电话号码),但我得到的是带前导零的“09744012345”。 如何正确转换国际电话号码?

    • 我有这样一个字符串:33123456789(法语电话号码)。我想在不知道国家的情况下提取国家代码(33)。例如,如果我有另一部来自另一个国家的手机,它应该可以工作。我使用谷歌图书馆https://code.google.com/p/libphonenumber/. 如果我知道国家,那很酷,我可以找到国家代码: 但是我找不到一种在不了解国家的情况下解析字符串的方法。

    • 我的电话号码是字符串,如“91 96001 64500”(从google places API获取数据),我想提取电话号码(不带国家代码)以及国家代码,而不知道国家(国家可以是任何国家)。我怎样才能在弗利特做到这一点。 注意:已经有另一个完全相同的问题被问到,从电话号码[libphonenumber]中提取代码国家,但它是针对android的,我希望它是针对Flatter的。

    • 我可以在Android系统中检测来电,但问题是我想知道那个电话号码的国家代码,这样我就可以分析它是国家号码还是国际号码。我知道libphonenumber,但它需要事先知道地区代码才能获得国家代码,如示例所示 它已经知道把作为参数。但是我们不知道这个数字是否为我们所知,那么我们如何分析这个数字。

    • 我需要在UITextField中显示电话号码格式作为占位符。我怎么能那样做? 对于国家选择,我使用下面提到的库,它提供了针对用户选择的国家的国旗和国家代码。 https://github.com/NikKovIos/NKVPhonePicker 选择国家后,我需要显示所选国家的电话号码格式,提交该电话号码时,我必须验证电话号码。 我还发现,第三方(PhoneNumberKit)的灵感来源于谷歌的l

    • 你好,我有一个电话号码,是:,我想把它转换成:。有一个图书馆http://code.google.com/p/libphonenumber/这可以很好地进行转换,但它需要一个电话号码和一个我无法提供的国家/地区代码,因为我正在读取手机以从DB转换。 基本上,我想要一个脚本或库,将E164作为参数,并将其转换为国际标准格式,如下所示: 欢迎提出任何意见,提前谢谢。