i18n验证

时间:2009-09-06 02:54:36

标签: php validation language-agnostic localization internationalization

  

Think Global,Act Local

这就是他们告诉你的,但是在我开发的所有时间里,我总是看到谷歌,微软,甲骨文等大公司以局部方式进行验证:他们知道我来自哪个国家,所以他们会尝试使用我所在国家/地区的正确验证方法验证我的电话号码,邮政编码和其他详细信息,例如银行帐号。昨天我报名参加谷歌结账,他们甚至向我展示了我国的邮政编码格式的一些例子!

所以我的问题是,他们是如何做到的?我知道他们有成千上万的员工,但我发现很难相信他们都必须彻底改造井。美国有无数的验证方法,但世界其他地方呢?我还没有看到一个开源的体面库(除了非常incomplete and outdated PEAR attempt之外)对各个国家的各个常见方面进行验证,例如:

  • 民事身份证
  • 税号
  • SSN(社会安全号码)
  • BBAN(基本银行帐号)
  • 传真,电话和手机号码
  • 邮政编码
  • 牌照
  • 纸币序列号
  • 等......

是否有任何我不知道的隐藏资源?

5 个答案:

答案 0 :(得分:1)

PEAR一个也不错。例如,新西兰的验证器有各种有用的东西,如邮政编码,税号,电话号码,银行帐号 http://pear.php.net/manual/en/package.validate.validate-nz.php

它仍处于Alpha状态,但覆盖了不少国家。可能值得重新考虑?

答案 1 :(得分:1)

简单验证和完整验证之间存在巨大差异。通常不可能跨区域标准化验证,这里有几个例子:

  • CivilID / SSN等号码可以允许/禁止替换值(系统特定),外来值,历史值等。我们在同一领域的一个应用程序中有2个不同的验证系统,具体取决于上下文,和其他IT系统可能有其他验证系统。

  • 邮政编码验证可能需要访问有效值列表,这是您需要订阅的内容。在许多国家/地区,此订阅不是自动化的,并且由于版权规则,重新分发并非易事。

  • 电话号码也存在类似问题。你允许昂贵的号码,手机号码吗?你是如何发现它们的?

您可能认为在大多数情况下可以进行简单的验证 - 但是对于简单的验证,通常更容易使用模式匹配并让每个市场中的本地部门定义有效模式。

软件服务合同也存在问题。如果您购买软件并希望使用它5年,那么如果有变化,您可以更改验证规则。我在我的国家经历了4次电话号码系统的更改,这些更改影响了简单验证,例如“数字位数”和“第一个数字可以是什么”。

因此,最佳解决方案是拥有一个特定于语言环境的模式的集中式数据库,并允许管理员修改验证模式。

答案 2 :(得分:0)

维基百科按国家/地区收集license plate information。同样适用于postal codes

答案 3 :(得分:0)

嗯,我认为所需要的只是来自该国的一名程序员,以及几天的研究和安排。写下验证..没有什么特别的.. +维基百科中有大量的信息

答案 4 :(得分:0)

也许来自http://www.geonames.org/ 他们也有一个很棒的api