【发布时间】:2014-07-19 09:11:00
【问题描述】:
是否有任何方法/函数可以比较 2 个二进制字符串之间的差异(例如,变量字符串中的 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 01100100 00100000 01101101 01100001 01101110 00100001
PHP 是个好人!
比较差异的命令会选择“are”/“is”和“man”
并且只有这些差异会被重新保存到变量字符串或文件中
0101001 01100110110101100101C201C1010101C10101C10110000
PHP [del]是[/del][ins]是[/ins] 好[ins] man[/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 好!
而将被保存的将是它们之间的区别,即“是/该” 所以它变成了
01100001010010011001C100001/10110010010000001C100001000000PHP [del][/del][ins][/ins] 不错!
对不起,如果它看起来很乱。我不想使用代码框来防止部分看到二进制文件并更容易比较
【问题讨论】:
-
我不同意你的观点。 Similar_text 只是计算相似度并从您的来源中引用“返回两个字符串中匹配字符的数量。” levenstein 仅计算更改的总数,但不会将其返回给您。 strcmp() 的工作方式类似于similar_text 和levenstein 的组合。我正在寻找的是可以返回和保存的差异,类似于 php 中的 array_diff,但对于字符串,可以保存这些差异。
-
strcmp() 可以使用,但它仍然没有回答如何将差异保存到变量字符串或文件中并消除差异的问题。
-
方法@Loz Cherone ツ,无缘无故地对此投反对票,只是删除你的评论,让我看起来像是在自言自语
-
我不会反对它。看到+1,我的评论也是错误的,想回答。
标签: php binary string-comparison