是否有任何方法/函数来比较两个二进制字符串之间的差异(例如:1从一个变量字符串和1从一个文件),只是重新保存这些差异回到变量字符串或文件?
。
01010000 01001000 01010000 00100000 01100001 01110010 01100101 00100000 01100111 01101111 01101111 01100100 00100001
PHP很好!
和
01010000 01001000 01010000 00100000 01101001 01110011 00100000 01100111 01101111 01101111 0110010000100000 01101101 01100001 01101110 00100001
PHP是好男人!
比较差异的命令将挑选"are"/"is"answers" man"
和只有这些差异将被重新保存到变量字符串或文件中,如
01010000 01001000 01010000 00100000 [del]01100001 01110010 01100101[/del][ins]01101001 01110011[/ins] 00100000 01100111 01101111 01101111 01100100 [ins]00100000 01101101 01100001 01101110[/ins] 00100001
PHP (del) [/del] (ins) [/ins] [/ins] (ins)人好!
另一个例子:
01010000 01001000 01010000 00100000 01100001 01110010 01100101 00100000 01100111 01101111 01101111 01100100 00100001
PHP很好!
01010000 01001000 01010000 00100000 01110100 01101000 01100101 00100000 01100111 01101111 01101111 01100100 00100001
PHP的好!
和将被保存的内容将是它们之间的差异,即"are/the"所以它变成了
01010000 01001000 01010000 00100000 [del]01100001 01110010 01100101[del][ins]01110100 01101000 01100101[/ins] 00100000 01100111 01101111 01101111 01100100 00100001
PHP [del]是[/del][ins]的[/ins]好!
对不起,如果它看起来很乱。我不想使用代码框来防止二进制文件被部分看到,以便于比较
如果我理解正确,你想在两个字符串上有array_diff()行为,那么就把它们爆炸()成数组,之前不需要对它们进行base2(如果源是base2,然后将其转换回来)。
但是从你期望的输出中,你不能单独从array_diff()中得到你想要的。
你需要在array_diff()中使用array_merge()和array_intersect()来返回不同的内容
用户函数:
<?php
function str_diff($stringA='', $stringB='')
{
$arrayA = explode(' ', $stringA);
$arrayB = explode(' ', $stringB);
//What I think you want
return array_diff(
array_merge($arrayA, $arrayB),
array_intersect($arrayA, $arrayB)
);
//There's also this, but A has priority over B
//return array_diff($arrayA, $arrayB);
//And this returns just all unique, not compared
//return array_unique(array_merge($arrayA, $arrayB));
}
?>
示例<?php
$strA = "PHP are good!";
$strB = "PHP is good man!";
$diff = str_diff($strA, $strB);
/*
Array
(
[1] => are
[2] => good!
[4] => is
[5] => good
[6] => man!
)
*/
echo '<pre>'.print_r($diff, true).'</pre>';
//are good! is good man!
echo implode(' ', $diff);
?>
例B
<?php
$strA = "PHP are good!";
$strB = "PHP the good!";
$diff = str_diff($strA, $strB);
/*
Array
(
[1] => are
[4] => the
)
*/
echo '<pre>'.print_r($diff, true).'</pre>';
//are the
echo implode(' ', $diff);
?>
保存字符串只需简单地调用file_put_contents()
希望能有所帮助。