我必须格式化电话号码列表,并且我希望从号码中提取和分离前缀以便更好地查看。
我有一个所有可能前缀的列表,但没有常规模式
我的意思是,我可以有这些数字:
00 - 12345(短前缀)
0000 - 12345(长前缀)
我该如何管理?数字很简单,没有任何特殊字符(即没有/ \ - 。,ecc ecc) 前缀是这样的:
030
031
0321
0322
...
...
大部分时间我都有客户的城镇(这不是必需的)所以,通常我可以从那里获得前缀,但这不是一个确定的事情,因为 town < / em>和电话无法链接。
==编辑==
前缀列表长231个条目。也许我会添加更多东西,所以把300作为安全值
此外,前缀仅来自一个国家(意大利)
我必须保存普通数字而不使用任何分隔符,以便用户可以搜索它。事实上,如果他们放置分隔符,他们将永远无法再找到它。
更多信息
前缀ALWAYS以前导 0 开头,其长度范围为2-4
但是我研究这个东西越多,我就越觉得我无法解决这个问题:(
答案 0 :(得分:1)
由于extremely varied telephone number formats used around the world,正确解析放入系统的任何电话号码可能会很困难。
我不确定它是否会让你的问题变得更容易,但我认为从从右到左解析对你来说可能更容易,因为它是前缀长度未知
答案 1 :(得分:0)
多么痛苦。我会使用逻辑漏斗来缩小可能的选择范围,最后做出最佳猜测。
首先,测试前几个数字是否可以匹配前缀列表中的任何内容。对于一些人来说,希望只有一个前缀可能是正确的。
然后,也许您可以使用该城市来消除来自完全不同国家的前缀。
最后,您可以默认使用最常用的前缀格式。
没有任何其他信息,除非你想要默认不使用任何格式,否则你不能做得更好。
答案 2 :(得分:0)
我真的很困惑。你是什么意思,“提取和分离”?我的猜测是这些电话号码在MySQL数据库中,你可以使用PHP。您是否尝试从数字中获取前缀,然后将它们插入同一行中的其他字段?你是从数据库中提取这些数字,你只想将前缀打印到屏幕上吗?
无论你想做什么,并且理所当然地认为你正在使用PHP和正则表达式,这本质上不是你想要的吗?:
$telephone_number = '333-12345';
$matched = array();
preg_match('~^(\d+)-~', $telephone_number, $matched);
$matched[1] // Should be '333'
答案 3 :(得分:0)
所以事情很简单:
我得到前4个数字 - &gt;是在我的前缀表中?
是的:到此为止 NO:获得第3名
依旧......
感谢您的帮助