通过电话号码确定国家 - php

我在SO上看到了一些与我的要求类似的问题,但似乎没有什么合适的。

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

44 7899455120-英国

34 965791845-西班牙

355 788415235-阿尔巴尼亚

显然,如果所有调用代码都是两位数字,那么世界将会很好,但是事实并非如此。目前,我有一个充满国家和相关代码的数据库,为了匹配,我需要有效地提取数字的第一位,例如4作为英国示例,并进行数据库查询,例如:

SELECT * from countries WHERE code LIKE '4%'

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

SELECT * from countries WHERE code LIKE '44%'

这可能会让我说一个结果,现在我可以确定它是英国。但是,某些代码(如阿尔巴尼亚)为三位数字,需要更多的循环和数据库调用。这似乎很简单,效率很低,但是我想不出另一种方法来实现这一目标。我知道对数据库的三个调用看起来似乎不多,但是如果您要处理1000个调用,它们很快就会加起来。

看下面的问题:

What regular expression will match valid international phone numbers?

关于根据国家/地区代码验证数字似乎有很多有用的信息,但是关于根据数字确定国家/地区代码的信息则不多。任何关于清洁方法的建议将不胜感激。

为了清楚起见,显示了电话中的空格

参考方案

存在一个可以解析数字字符串并将其重新格式化为国际标准(例如4402081231234到'+44 20 8123 1234'的数字)的库。如果该号码中嵌入了国家/地区代码,它还将返回电话号码区域,即“ GB”或“ US”。

https://github.com/googlei18n/libphonenumber原始库使用Java,但也有Javascript,Python,Ruby和PHP等版本。

php preg_replace两个或更多空格 - php

我正在寻找替换多个空格字符的实例。我最初的搜索似乎都集中在使用/s,但这包括换行符和其他空格我认为应该接近吗?用一个空格替换两个或更多实例空格" "preg_replace('/ {2,}/', ' ', $string); 参考方案 尝试一下:preg_replace('/\s\s+/&…

PHP preg_match直到双行中断 - php

我在mysql字段中有此数据:First text text text text text text text text text text text text text text text text text text text text Second text text text text text text text text text text te…

preg_match不捕获内容 - php

我的preg_match有什么问题?preg_match('numVar("XYZ-(.*)");',$var,$results); 我想从这里获取所有内容:numVar(“ XYZ-CONTENT”);感谢您的任何帮助! 参考方案 我认为这是PHP?如果是这样,则您的代码存在三个问题。PHP的PCRE函数要求使用分隔…

PHP:Preg_replace,单词边界和非单词字符 - php

我需要替换文本中以井号(#)开头的单词。好吧,我知道如何替换整个单词。preg_replace("/\b".$variable."\b/", $value, $text);由于该\ b修饰符仅接受单词字符,因此不会替换包含井号的单词。我有这个html,其中包含#companyName类型的变量,我将其替换为一个值。 参…

PHP preg_replace删除字符串中的第一个HTML元素 - php

我想在PHP中删除html字符串(始终是一个段落)的整个第一个元素。我目前的方法是使用:$passage = preg_replace('/.*?\b'.'</p>'.'\b/s', '', $passage, 1); 由于</p>中的特殊字符,此方法不起…