PHP-获取一个差异报告,其中包含文本中插入的位置

PHP-获取一个差异报告,其中包含文本中插入的位置,php,text,position,diff,character,Php,Text,Position,Diff,Character,我知道PHP有很多文本差异,但是我还没有找到一个可以返回插入位置的文本差异 例如 我想是8点* 因此,这种差异应该发生在角色级别。我应该能够从返回中从“之前”文本复制“之后”文本 有什么想法吗? 提前感谢,我花了一些时间,为您找到了一个起点: function string_compare($string1, $string2) { $chars1 = str_split($string1); $chars2 = str_split($string2);

我知道PHP有很多文本差异,但是我还没有找到一个可以返回插入位置的文本差异

例如

我想是8点*

因此,这种差异应该发生在角色级别。我应该能够从返回中从“之前”文本复制“之后”文本

有什么想法吗?
提前感谢,

我花了一些时间,为您找到了一个起点:

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;
    }
唯一的缺点是,它返回关于如何将较长字符串转换为较短字符串的更改


此功能阻塞,请不要使用,抱歉

我花了一些时间,为您找到了一个起点:

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。2.不是重复,因为这些答案只提供了获取差异的解决方案,但没有准确返回插入/删除的位置,以便可以使用它们从旧文本完全复制新文本,如我上面概述的。可能的重复1。2.不是重复,因为这些答案只提供了一个获取差异的解决方案,但没有准确返回插入/删除的位置,以便可以使用它们从旧文本中完全复制新文本,如我上面概述的。