【问题标题】:matching phone number from mysql in php在php中匹配来自mysql的电话号码
【发布时间】:2014-03-04 00:38:48
【问题描述】:

我在我的数据库中为我的客户保存了电话号码,如您所知,电话号码没有特定格式,所以有些号码就像(+1)123 3123 OR 212-43-1.,问题出在我的 php 代码中,我进行查询以检查一个电话号码存在,所以如果我输入像11233123 这样的号码,那么它不会产生任何结果,但它已经在那里了。 关于如何匹配的任何解决方案? 我想到的解决方案是在检查时删除所有特殊字符

【问题讨论】:

  • 你应该用一个模式格式化每个数字然后保存它,在搜索它时,验证格式然后搜索。您的模式可能就是您所说的:删除所有特殊字符。
  • 解决方案是在 in 到数据库的途中删除任何非数字的东西。在 UI 中向用户显示电话号码时,您应该只对电话号码进行格式化。
  • @Seanbright 在数据库中进行规范化的问题是您必须在输出时进行格式化,而这本身就充满了困难。出于这个原因,我倾向于存储这两种形式。
  • @MikeW 这是个好主意

标签: php mysql regex select varchar


【解决方案1】:

您可以在查询期间使用REPLACE 从数据库中的数据中删除特殊字符。或者当您添加电话号码时,在 PHP 中,删除特殊字符并将电话号码保存为数字。然后搜索您从中删除了特殊字符的列。

这是REPLACE 的文档(它在字符串下,不要与REPLACE 查询类型混淆):http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_replace

正如在此页面上发布的大多数人所说,在将输入添加到数据库之前清理输入是首选方法。

【讨论】:

    【解决方案2】:

    数据库中的电话号码应为此特定原因normalized

    或者你可以看看anotherquestionshere如何乱搜。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-04
      • 2015-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-16
      • 1970-01-01
      相关资源
      最近更新 更多