比较php中的两个字符串并显示字符差异
嗨,我正在努力做到这一点: 我想比较两个字符串并用php计算它们的分数 这意味着我有两个字符串: $string1=“example1”; $string2=“exumple22” 现在我想比较字符串是否相等——在本例中,它们不相等 但另外,我想看看匹配的字符。至少数一数 在这种情况下,这将是:6 我已经试过了,但我被卡住了她的例子是:比较php中的两个字符串并显示字符差异,php,string,compare,character,match,Php,String,Compare,Character,Match,嗨,我正在努力做到这一点: 我想比较两个字符串并用php计算它们的分数 这意味着我有两个字符串: $string1=“example1”; $string2=“exumple22” 现在我想比较字符串是否相等——在本例中,它们不相等 但另外,我想看看匹配的字符。至少数一数 在这种情况下,这将是:6 我已经试过了,但我被卡住了她的例子是: enter code here <? include("connect.php"); $query="SELECT * FROM data where
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;
}
?>
在此处输入代码
您可以计算两个字符串之间的距离:
在最简单的形式中,该函数将仅将两个字符串作为参数,并将计算将str1转换为str2所需的插入、替换和删除操作数
有关如何使用类似文本($str1,$str2)
这将提供两个字符串中匹配字符的数量
<?php
echo similar_text("Hello World","Hello Peter");
?>
将为您提供7(共有字符数)。试试这个
<?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);
你能描述一下你到底是如何陷入困境的吗?到底是什么让你头疼?你能不能把你的代码简化成对解决你的问题很重要的东西?他想计算匹配字符的数量,而不是levenshtein距离。@js1568,我的错误,他应该使用相似的文本而不是Hi谢谢,相似的文本()只会给我一个百分比,而不是匹配字符的确切数目,对吗?不,similor_text()函数返回两个字符串的匹配字符数。它还可以计算两个字符串的相似度,以百分比表示。这真的很好。但是,当我在$string1
中有变量时,我就面临这个问题,假设$string1='example1'$替代我当我想要比较字符串2时,变量应该忽略$replaceme变量中最多10个字符。你能指导我做这件事吗?