在php中找到Orignal字符串和已编辑字符串之间的差异?

时间:2015-12-20 14:16:03

标签: php

我有以下2个字符串:

orignal string

$orignal_string="Hello world!";

已编辑的字符串:

$edited_string="Hello Ladies!";

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

我正在使用strcmp()函数,但它以numbric值返回diffrence。

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

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

2 个答案:

答案 0 :(得分:1)

您可以使用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
)

请注意,这仅适用于整个单词。如果在编辑字符串中插入或删除了新单词,则会将整个内容搞砸。这不是一个完全成熟的类似贴片的方法。

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

答案 1 :(得分:1)

以下是您要找的xdiff_string_diff

注意:此函数不适用于二进制字符串。要使二进制字符串的差异使用xdiff_string_bdiff()/xdiff_string_rabdiff()