之前网上复制了一个摘要算法,一直使用正常。最近写的一篇前500字里含有超链接,就导致摘要生成有误,从而影响了前端样式。所以后面打算自己写,想起大学编译原理匹配表达式的大致思想,就决定采用栈的思想试试。
实现目标:对常用富文本编辑器(ueditor,kindeditor
etc)编辑好的文档进行一定数目字符的截取,保留原始html标签,使摘要在前端正常显示。
问题分解:
1.如何区分src及href等里路径里的斜杠‘/’和html里闭合标签的斜杠‘/’
2.如何判断截取好的字符串其中html标签完整匹配。
以下是算法思想里的重要描述,可能不够准确,有错误之处,还望指正。
1.不是以‘>'形式出现的斜杠,就不是html闭合标签的斜杠。
2.遍历时,上一个字符是‘
例如遍历无损截取html时,遍历到‘/’时,从右往左看,就将‘’依次出栈
3.br, hr,img等无需要求成对出现的html标签,配对方式为‘'。
例如遍历
时,遍历到‘>’时,判断之前拼接的字符串由img引导,就将最开始的‘
下面是本人根据算法思想画的大致流程图:
本人有用PHP代码实现,想参考的话可以访问原链接:无损截取html生成文章摘要系列1_栈
目前测试了几篇文章,摘要获取正常。后续若发现问题,继续完善。