2

PHP の similar_text() 呼び出しを使用して 2 つの文字列を比較していますが、十分な結果が得られていません。

文字列をコアまで取得するには、他にどのような関数を使用できますか?

<!-- Overcast, Rain or Showers compared Overcast, Rain or Showers is 80.9523809524 -->
<!-- Overcast, Risk of Rain or Showers compared Overcast, Rain or Showers is 86.2068965517 -->
<!-- Overcast, Chance of Rain or Showers compared Overcast, Rain or Showers is 83.3333333333 -->
4

2 に答える 2

4

レーベンシュタイン距離: http: //php.net/manual/en/function.levenshtein.php

これはsimilar_text()の逆であるため、0%は違いがないことを意味します。

// <!-- Overcast, Rain or Showers compared Overcast, Rain or Showers is 0 -->
// <!-- Overcast, Risk of Rain or Showers compared Overcast, Rain or Showers is 11 -->
// <!-- Overcast, Chance of Rain or Showers compared Overcast, Rain or Showers is 13 -->
于 2012-05-21T18:50:57.723 に答える
3

レーベンシュタイン距離は、文字列を比較するのに適した方法です。よりも高速similar_text()で、アルゴリズムのさまざまな部分に重みを付けて出力を制御できます。

レーベンシュタイン距離を使用可能な「一致」パーセンテージに変換するには、ソース文字列の平均長の一部として表現できます。

// Assume $src1 and $src2 are your source strings and at least one is non-empty

$avgLength = ( strlen( $src1 ) + strlen( $src2 ) ) / 2;
$matchFraction = 1 - ( levenshtein( $src1, $src2 ) / $avgLength );

//$matchFraction is now between 0 and 1, with 1 being equal strings and 0 being totally different
于 2012-05-21T18:58:36.810 に答える