【发布时间】:2011-05-02 01:45:37
【问题描述】:
我有一个字段可以输入您朋友的姓名并搜索他以将他添加为朋友。
问题是,如果您不确定如何拼写他的名字,例如:
Kris 而不是 Chris。
我认为正确的方法是使用 RegEx,但我不知道如何...
如何在 PHP 中处理这些错别字?
(如果在 PHP 中不可能,请告诉我如何在 jQuery 中处理)
【问题讨论】:
我有一个字段可以输入您朋友的姓名并搜索他以将他添加为朋友。
问题是,如果您不确定如何拼写他的名字,例如:
Kris 而不是 Chris。
我认为正确的方法是使用 RegEx,但我不知道如何...
如何在 PHP 中处理这些错别字?
(如果在 PHP 中不可能,请告诉我如何在 jQuery 中处理)
【问题讨论】:
正则表达式不适用于此。最好的办法是创建一组名称,将相似名称与其拼写组合在一起。所以 Chris 这个名字会搜索 Kris、Chris、Kriss 等。
hash_map 可能是一个不错的选择。 Levenshtein 距离可能会起作用,但您会得到很多误报:(例如 Camella vs Pamella)。
【讨论】:
我认为正则表达式不是检查拼写错误和类似字符串的好方法。我会考虑像 levenshtein 这样的东西 - PHP 甚至有一个本机函数,levenshtein。
编辑:根据您要查找的内容,PHP 中还有其他原生算法:soundex(尽管被认为已被 Double Metaphone 等新方法取代)、metaphone、similar_text。
【讨论】:
metaphones 可能比 levenshtein 和其他人更重要。但是,它们是特定于语言的,如果当前语言不是英语,则应使用另一种变音位算法。