我有以下两个字符串:
原始字符串
$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()
。
您可以使用explode
和array_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。