在php中查找原始字符串和编辑字符串之间的差异


Find diffrence between Orignal string and edited string in php?

我有以下两个字符串:

原始字符串

$orignal_string="Hello world!";

编辑字符串:

$edited_string="Hello Ladies!";

如何找到这两个字符串之间的差异,并将差异打印为给定字符串的Ladies

我使用的是strcmp()函数,但它返回的是numeric值的difference。

 $orignal_string="Hello world!";
$edited_string="Hello Ladies!";
echo strp($orignal_string,$edited_string);

php或regex中还有其他方法可以做到这一点吗?

以下是您要查找的xdiff_string_diff

注意:此函数不适用于二进制字符串。要对二进制字符串进行diff,请使用xdiff_string_bdiff()/xdiff_string_rabdiff()

您可以使用explodearray_diff_assoc(在本例中返回不同的单词)或array_intersect_assoc(在本案中返回相同的单词)来查找不同的单词。

$original_string = "Hello world!";
$edited_string = "Hello Ladies!";
$orig = explode(" ", $original_string);
$edit = explode(" ", $edited_string);
$diff = array_diff_assoc($orig, $edit);
$intersect = array_intersect_assoc($orig, $edit);
echo "diff:'n";
print_r($diff);
echo "intersect:'n";
print_r($intersect);

输出:

diff:
Array
(
    [1] => world!
)
intersect:
Array
(
    [0] => Hello
)

请注意,这只适用于整词。不过,如果在编辑字符串中插入或删除新词,就会把整个事情搞砸。这不是一个成熟的类似patchdiff的方法。

对于两个字符串的统一diff,您可能需要查看xdiff_string_diff。