2015-12-20 56 views
0

我有以下两个字符串:在PHP中找到Orignal字符串和编辑字符串之间的差异?

一部开拓创新的字符串

$orignal_string="Hello world!"; 

编辑字符串:

$edited_string="Hello Ladies!"; 

我如何才能找到这两个字符串之间之探源,并打印之探源为女士给定的字符串?

我正在使用strcmp()函数,但它返回numbric值中的差异。

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

是否有任何其他方式在PHP或正则表达式来做到这一点?

+1

你看看https://github.com/sebastianbergmann/diff吗?它是PHPUnit核心的组件。 –

回答

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 
) 

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

对于两个字符串的统一差异,你可能想看看xdiff_string_diff

1

这里是你在找什么xdiff_string_diff

注:此功能不能与二进制字符串很好地工作。为了使二进制字符串的差异使用xdiff_string_bdiff()/xdiff_string_rabdiff()

+0

虽然这并没有给你带来什么区别,这似乎是OP在寻找的东西。为了简单地检查两个字符串是否不同,已经有'strcmp',它比crc32执行两次的速度更快。 – ccKep