php – 如何显示2个html文本块的比较

我需要带两个带有html标签的文本块并进行比较 – 合并两个文本块,然后突出显示从一个版本添加到下一个版本的内容.

我已经使用PEAR Text_Diff类成功地呈现纯文本的比较,但是当我尝试在其中输入带有html标签的文本时,它会变得很难.由于该类使用的单词和基于字符的比较算法,html标签被破坏,我最终得到了诸如< p>< span class =“new”>等丑陋的东西. < /< /跨度指p取代.它屠杀了HTML.

有没有办法在保留原始有效的html标记的同时生成文本比较?

谢谢您的帮助.我已经工作了几个星期了:[

这是我能想到的最佳解决方案:使用1个特殊的非标准字符(例如苹果标识(opt shift k))查找/替换每种类型的html标记,渲染与此类主要标记的比较,然后还原非标准字符返回标签.任何反馈?

问题似乎是您的diff程序应该将现有的HTML标记视为原子令牌而不是单个字符.

如果您的引擎能够限制自己处理单词边界,请查看是否可以覆盖确定单词边界的函数,以便识别并将HTML标记视为单个“单词”.

您也可以按照自己的意思去创建不同HTML标记的查找字典,用不同的未使用的Unicode值替换每个标记(我认为您可以使用一些用户定义的范围).但是,如果执行此操作,对标记的任何更改都将被视为对前一个或后一个单词的更改,因为Unicode字符将成为该单词到标记生成器的一部分.在每个令牌Unicode字符之前和之后添加空格将使HTML标记更改与纯文本更改分开.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


如何选择合适的 C++ Web 开发框架?
利用 C++ 框架构建高并发 Web 应用的策略
用 C++ 框架开发跨平台图形应用程序
golang框架中安全编码实践的最佳指南是什么?
golang框架与其他语言框架在设计理念上的区别有哪些?
C++ 图形框架与其他语言框架的比较
C++ 框架与其他 Web 开发框架的对比分析
使用 C++ 框架构建大型项目最佳实践
C++ 框架如何提高大型项目开发效率
C++ 框架中依赖注入的持续集成与部署工具
如何与社区协作和贡献到自定义 Golang 框架?
C++ 框架在大型项目中如何实现模块化开发
使用 C++ 框架开发跨平台 Web 应用
C++ 框架在大型项目中的优缺点
golang框架在性能上的优势体现在哪些方面?
C++ 框架在嵌入式系统内存优化中的优势
golang框架在人工智能与机器学习中的作用
如何扩展 Golang 框架以支持特定功能?
如何利用 Go Modules 和依赖项管理来自定义 Golang 框架?
Golang 框架中的性能优化技巧