2012-06-05 19 views
8

Hola estoy luchando para obtener este derecho:comparar dos cadenas en PHP y muestran diferencias de carácter

quiero comparar dos cadenas y calcular su puntuación en php.

Lo que esto significa es que tengo dos cadenas:

$ cadena1 = "ejemplo1"; $ string2 = "exumple22";

Ahora quiero comparar las cadenas si son iguales, en este caso no lo son.

Pero, además, quiero ver los caracteres que coinciden. Al menos cuéntalas.

En este caso, sería: 6;

He intentado esto pero ella estoy atascado es mi ejemplo:

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; 
} 
?> 
+1

Puede describir cómo es exactamente lo que está atascado? ¿Qué específicamente te está dando dolor de cabeza? – Amadan

+1

Coud, por favor reduzca su código a solo las cosas que son importantes para resolver su problema? – clentfort

Respuesta

2

se puede calcular la distancia levenshtein entre 2 cadenas:

En su forma más simple, la función tendrá sólo el dos cadenas como parámetro y calculará solo el número de operaciones de inserción, reemplazo y eliminación necesarias para transformar str1 en str2.

+2

Quiere contar el número de caracteres coincidentes, no la distancia levenshtein. – js1568

+0

@ js1568, error mío, debería usar texto similar en su lugar – Tremmors

+0

Hola gracias, similar_text() solo me daría un porcentaje, no el número exacto de caracteres coincidentes ¿no? – user1091883

2

probar este

<?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); 
Cuestiones relacionadas