1

私は次のようなことをしなければならない関数phpを書いています:

  • 2つの文字列があります。例:「Bienvenue」と「Bienbenue

  • 2つの文字列がphp関数strposと一致しません。

  • しかし、通常、私の関数の基本的な機能は、「はい、2つの文字列間で異なる文字が1つしかないので、trueを返します」と言うことです。しかし、存在するアルゴリズムまたはphp関数を見つけるためにいくつかの助けが必要ですか?

  • この例では、「Bienvenue」と「Vienlpntw

  • パターンに一致する「ien」だけがあります。一致した文字の数を確認し、その後、この数を単語/パターンのサイズと比較する必要があります。

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

    しかし、この例では、「対話性と「相互作用」 、一致する「インテ」 「アクティ」と「イティあります。したがって、正しい13文字のうち11文字があります。したがって、文字のエラーを管理するのは簡単ではありません...

履歴書については、エントリが私のパターンと一致するかどうかを教えてくれるphp関数を探しています。これらの点に関して、trueまたはfalseを返します。

4

2 に答える 2

4

これを実現するには、組み込み関数similar_textを使用できます。いくつかの「癖」についてもメモを確認してください。

あなたのコメントに基づいて、あなたはおそらくこのようなものを使用したいと思うでしょう。これは最も長い共通の部分文字列を取得し、それを文字列の長さで割って、trueまたはfalseを返すためのしきい値を与えます

于 2012-04-20T18:00:55.353 に答える
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;
}
于 2012-04-20T18:06:30.967 に答える