2012-04-20 9 views
1

であれば、私はこのような何かを持っている機能のPHP書いていますので、私はいくつかの助けが必要参照してください。PHPの構文解析文字列と、彼らはsimiliars

  • を文字列、元に我々が持っている:「ビアンヴニュ」と"Bienbenue"
  • 2つの文字列がphp関数strposと一致しません。
  • しかし、通常、私の機能の基本的な調整は、はい、大丈夫です.2つの文字列の間に異なる1つの文字しかないので、私は真実を返します。しかし、存在するアルゴリズムやPHP関数を見つけるためにいくつかの助けが必要ですか?パターンにマッチただけで「IEN」がある「ビアンヴニュ」と「Vienlpntw

  • 、私はマッチしていたどのように多くの手紙参照してくださいする必要があり、その後、これをコンパ:この例では

  • 単語/パターンのサイズの数字。

  • したがって、9/3 = 3です。この比率は悪いので、私は偽を返します。

    が、この例では: "インタラクティブ" と "intevactizity"、私たちは "INTE" " ACTI " と "一致しているITY" を持っています。 13桁のうち11桁が正解です。 だから...履歴書のために

文字のエラーを管理することは容易ではありません、私は、真または偽の尊重を返し、エントリが私のパターンと一致するかができないなら、私を伝えることができ、PHPの関数を探していますこれらの点。

+0

このアプリケーションの用途は?宿題のにおいがする... –

+0

宿題私はそうではない、それはちょうど私のウェブサイトの私の研究エンジンをアップグレードすることだと思う。 – Necko

答えて

4

組み込み関数similar_textを使用してこれを実行できます。 notesもいくつかの 'quirks'についてチェックしてください。その後、

ご意見をもとに、あなたはおそらく最長共通部分文字列を取得しますthisのようなものを、使用したい、と文字列の長さによって、それを分割し、それをここに真または偽

+0

私はどのようにこのアルゴリズムが動作するのかわからないが、それは私が探しているものではない。このアルゴリズムでは、文字列内の文字の位置を考慮しません。 – Necko

+0

たとえば、文字 'a'が文字列 'salut'に含まれているかどうかだけではなく、文字 'a'が2番目の文字でなければなりません最初の文字列、どういう意味ですか? – Necko

+0

@Neckoそれは意見の問題ですが、私は 'salut'と' ssalut'はかなり似ていますが、あなたのアルゴリズムによればそうではありません。 – jeroen

1

を返すためにそれによってしきい値を与えます非常に単純な例

function precisionMatch($string1, $string2, $precision = 0.6666666) { 

    $matchCount = 0; 
    $string1Length = strlen($string1); 
    $string2Length = strlen($string2); 
    for($i = 0; $i < $string1Length; $i++) { 

     if ($i < $string2Length && $string1[$i] == $string2[$i]) { 

      $matchCount++; 
     } 
    } 

    return $matchCount/($string1Length == 0 ? 1 : $string1Length) > $precision; 
}