8

こんにちは私はこれを正しくするのに苦労しています:

2つの文字列を比較し、phpでスコアを計算したいと思います。

つまり、2つの文字列があります。

$ string1 = "example1"; $ string2 = "exumple22";

次に、文字列が等しいかどうかを比較します。この場合はそうではありません。

しかし、さらに私は一致する文字を見たいです。少なくともそれらを数えなさい。

この場合、次のようになります。6;

私はこれを試しましたが、私は立ち往生しています彼女は私の例です:

enter code here
<?  
include("connect.php");
$query="SELECT * FROM data where ID = '1'";
$result = mysql_query($query) or die(mysql_error());


while($row = mysql_fetch_array($result))
{
    //echo "Score :{$row['scoreA']} <br>" ;
    $scoretemp=$row['scoreA'];
    $string1=$row['textA1'];
    $string2=$row['textA2'];


} 
mysql_close();

if (strcmp($string1, $string2) != 0){
    echo "not equal in a case-sensitive string comparison <br>";
$j = strlen($string1);
    for ($i = 0; $i < $j; $i++) {
    $stringtemp1++;
    echo $string1[$i].', ';
    echo $stringtemp1;
    }    

    $u = strlen($string2);
    for ($t = 0; $t < $u; $t++) {
    $stringtemp2++;
    echo $string2[$t].', ';
    echo $stringtemp2;
    }$scoreA=($stringtemp1 - $stringtemp2);    
    $stringtemp1=0;$stringtemp2=0;
}
else{
    echo "Stringmatch! <br>";
        $e = strlen($string1);
        for ($r = 0; $r < $e; $r++) {
        $stringtemp1++;
        echo $string1[$r].', ';
        echo $stringtemp1;
}$scoreA=$stringtemp1;
$stringtemp1=0;
}
 ?>
4

3 に答える 3

10

使用方法については、http://www.php.net/manual/en/function.similar-text.phpを参照してください。similar_text($str1, $str2)

これにより、両方の文字列で一致する文字の数が得られます。

<?php
    echo similar_text("Hello World","Hello Peter");
?>

7(共通の文字数)が得られます。

于 2012-06-05T18:57:02.753 に答える
5

これを試して

<?php

$string1 = 'example1';
$string2 = 'exumple22';

$matchingcharacters = [];
$mismatchingcharacters = [];

$len1 = strlen($string1);
$len2 = strlen($string2);

$similarity = $i = $j = $dissimilarity = 0;

while (($i < $len1) && isset($string2[$j])) {
    if ($string1[$i] == $string2[$j]) {
        $similarity++;
        $matchingcharacters[] = '['.$string1[$i].']';
    } else {
        $dissimilarity++;
        $mismatchingcharacters[] = '['.$string1[$i] . " & " . $string2[$j].']';
    }
    $i++;
    $j++;
}
echo 'First string : '.$string1.'<br>';
echo 'Second string : '.$string2.'<br>';
echo 'Similarity : ' . $similarity . '<br>';
echo 'Dissimilarity : ' . $dissimilarity . '<br>';
echo 'Matching characters : ' . implode(",", $matchingcharacters) . '<br>';
echo 'Mismatching characters : ' . implode(",", $mismatchingcharacters);
于 2016-09-21T07:47:56.470 に答える
2

2つの弦の間のレーベンシュタイン距離を計算できます。

最も単純な形式では、関数は2つの文字列のみをパラメーターとして受け取り、str1をstr2に変換するために必要な挿入、置換、および削除操作の数だけを計算します。

于 2012-06-05T18:52:49.997 に答える