【问题标题】:PHP :: handle typos in searchPHP :: 处理搜索中的拼写错误
【发布时间】:2011-05-02 01:45:37
【问题描述】:

我有一个字段可以输入您朋友的姓名并搜索他以将他添加为朋友。
问题是,如果您不确定如何拼写他的名字,例如:
Kris 而不是 Chris
我认为正确的方法是使用 RegEx,但我不知道如何...

  • 如何在 PHP 中处理这些错别字
    (如果在 PHP 中不可能,请告诉我如何在 jQuery 中处理)

【问题讨论】:

    标签: php regex search


    【解决方案1】:

    正则表达式不适用于此。最好的办法是创建一组名称,将相似名称与其拼写组合在一起。所以 Chris 这个名字会搜索 Kris、Chris、Kriss 等。

    hash_map 可能是一个不错的选择。 Levenshtein 距离可能会起作用,但您会得到很多误报:(例如 Camella vs Pamella)。

    【讨论】:

      【解决方案2】:

      我认为正则表达式不是检查拼写错误和类似字符串的好方法。我会考虑像 levenshtein 这样的东西 - PHP 甚至有一个本机函数,levenshtein

      编辑:根据您要查找的内容,PHP 中还有其他原生算法:soundex(尽管被认为已被 Double Metaphone 等新方法取代)、metaphonesimilar_text

      【讨论】:

      • +1,尽管metaphones 可能比 levenshtein 和其他人更重要。但是,它们是特定于语言的,如果当前语言不是英语,则应使用另一种变音位算法。
      • Double Metaphone 也尝试包含许多其他语言(有一个可用于 PHP 的实现),尽管它在实践中的效果值得怀疑。
      猜你喜欢
      • 1970-01-01
      • 2011-11-04
      • 2021-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-14
      • 2011-04-14
      相关资源
      最近更新 更多