私はいくつかの時間を過ごし、あなたのための出発点に到着しました:
function string_compare($string1, $string2) {
$chars1 = str_split($string1);
$chars2 = str_split($string2);
$longer = strlen($string1) > strlen($string2) ? $chars1 : $chars2;
$shorter = strlen($string1) > strlen($string2) ? $chars2 : $chars1;
$key_offset = 0;
$changes = array();
foreach($longer as $key => $char) {
#$key2 = $key + $key_offset;
$char2 = isset($shorter[$key]) ? $shorter[$key] : '';
if($char !== $char2) {
if(empty($char2)) {
$changes[$key] = array('remove' => $char);
} elseif(empty($char)) {
$changes[$key] = array('add' => $char);
} else {
$changes[$key] = array('change' => $char.' to '.$char2);
}
}
}
return $changes;
}
唯一の欠点、それは短い1に長い文字列を取得する方法に変更を返すということです。
この関数はチョークします。使用しないでください。
1.可能な重複[PHPのテキスト差分を計算する(http://stackoverflow.com/questions/112523/calculate-text-diffs-in-php) 2. [二つの文字列間の差を強調表示しますPHPの場合](http://stackoverflow.com/questions/321294/highlight-the-difference-between-two-strings-in-php) –
重複していないのは、これらの答えがdiff上で概説したように、挿入/削除の位置を正確に戻すことはできません。そのため、古いテキストから新しいテキストを完全に複製するのに使用できます。 – ProgrammerMan