2010-10-28 80 views
3

我有一個字段輸入你的朋友的名字,並搜索他,把他添加爲朋友。
的問題是,如果你不知道如何拼寫他的名字,如:
克里斯,而不是克里斯例如。
我認爲這樣做的正確方法是使用正則表達式,但我不知道如何...

PHP ::在搜索中處理拼寫錯誤

  • 我如何處理這些類型的錯別字在PHP
    (如果它不是在PHP可能再告訴我該怎麼辦呢jQuery中)

回答

6

我覺得正則表達式是不檢查拼寫錯誤和類似琴絃一個不錯的辦法。我會考慮像levenshtein - PHP甚至有一個本地功能,levenshtein

編輯:根據你在找什麼,也有其他算法也在PHP本地:soundex(雖然認爲被更新的方法,如雙倍音符代替),metaphone,similar_text

+0

+1,雖然'metaphone's可能更接近levenshtein等人的觀點。但是,如果當前語言不是英語,則應該使用另一個metaphone算法。 – Wrikken 2010-10-28 23:19:01

+0

Double Metaphone也試圖包含許多其他語言(有一個可用於PHP的實現),儘管在實踐中它的工作效果很不確定。 – EboMike 2010-10-28 23:21:42

2

正則表達式不適用於此。最好的辦法是創建一組名稱,將他們拼寫的類似名稱組合在一起。所以Chris的名字會搜索Kris,Chris,Kriss等。

hash_map可能是一個不錯的選擇。萊文斯坦的距離可能會讓人失望,但你會得到很多誤報:(例如Camella vs Pamella)。