2017年第一篇日志,今天来说说一个我觉得很有意思的东西,文章摘要的生成。主要利用到了正则匹配来完成,下面来详细说说原理。

问题

生成文章摘要,就像下面的图片显示的一样,

困难有如下两点:

汉字的截取问题;

html标签的截取问题。

首先,中文环境下肯定不能用substr来进行截取,如果是英文文章,这样做没问题,如果是中文文章,会导致乱码,因为substr方法是按照ascii码进行截取,而一个汉字占三个字符长度,因此会很容易只截取汉字的一部分,如下:

var_dump(substr('你说斯蒂芬士大夫是领导方式呢开发', 0 , 2));

string(2) "�" // 打印

复制代码

当然,这个很好解决,多字节的字符可以用多字节字符串函数进行处理,打开php.ini,搜索mbstring.dll,将前面的;删除,重启apache后,即可使用多字节字符串处理函数。其中的mb_substr能够进行多字节字符串的截取。

困难二,也是比较麻烦的:html的截取。因为很容易截取一半的标签。当然,也有很多解决方法,如:

方法一,利用strip_tags除去所有的html标签,之后采用mb_substr进行截取,避免截取标签错误。当然,这样做的话,显示的文章没有任何样式,是纯文本;

方法二,可以在写文章时添加一个标志位,再利用mb_substr和mb_strpos来截取从开始到标志位的地方作为文章摘要。这个很不推荐,手动添加很恶心,影响文章书写,你不能让用户去做这个;

方法三,是对进行截取后的html进行分析,补齐未闭合的标签,删除错误的标签,这就需要用到正则了。

原理

我采用的方法就是第三种,利用正则来过滤和补充html内容,生成完整的文章摘要。

首先利用mb_substr对需要生成摘要的文章进行截取,对于截取后的字符串可能会有几种情况:

正好截取;

截取了一半的标签,如:

测试测试测试测试测试测试测试

这种情况,利用正则表达式来查询开始标签和结束标签,如果两个标签的数量不一致,那么说明有标签未闭合,同时可以得到未闭合的标签并将其补齐。

需要注意的是,HTML中有不少自闭和的标签,在匹配时注意去除这些内容,包括img,br,hr,link,meta,input等

错误的标签,如

// 一:

测试测试测试测试测试测试测试

测试测试测试测试测试

对这种情况,我的想法是利用正则直接将其删除掉,如错误一,

php文章摘要,PHP:如何生成文章摘要相关推荐

  1. python智能写作_闲人AI写作智能文章生成-文章伪原创-关键词生成文章工具

    闲人AI智能写作介绍(文章生成系统) 输入一个关键词,片刻即可生成一篇文章,文章相关性较好,生成内容相关性.可读性均较好.行业性(专业性)极强勿用!!! 适用人群:SEO从业者.自媒体.网络公司.需要 ...

  2. Diango博客--7.自动生成文章摘要

    文章目录 0.思路引导 1.方法一:覆写 save 方法 2.方法二:使用 truncatechars 模板过滤器 0.思路引导 博客文章的模型有一个 excerpt 字段,这个字段用于存储文章的摘要 ...

  3. 自动填充html_第 11 篇:自动生成文章摘要

    作者:HelloGitHub-追梦人物 文中涉及的示例代码,已同步更新到 [HelloGitHub-Team 仓库](https://github.com/HelloGitHub-Team/Hello ...

  4. AI自动文本生成怎么做?这几个工具能自动生成文章

    在今天这个数字化时代,AI技术的迅猛发展让我们惊叹不已.其中,AI自动文本生成技术更是让人瞠目结舌.无论是新闻报道.短篇小说.还是商业广告,它都可以通过算法与数据的组合,自动生成高质量.连贯流畅的文章 ...

  5. Django 快速搭建博客 第十一节(文章阅读量统计,自动生成文章摘要)

    这一节主要做一些修补工作,一个是:文章阅读量的统计,另一个是自动生成文章摘要内容 1 . 文章阅读量的统计: 1 文章阅读量的统计,我们需要在model下的Post类中新加入一个views 字段用来统 ...

  6. Word2vec加TextRank算法生成文章摘要

    依赖包:https://download.csdn.net/download/dreamzuora/10853874 代码: String document = "算法可大致分为基本算法.数 ...

  7. python论文摘要_Python实现提取文章摘要的方法

    本文实例讲述了Python实现提取文章摘要的方法.分享给大家供大家参考.具体如下: 一.概述 在博客系统的文章列表中,为了更有效地呈现文章内容,从而让读者更有针对性地选择阅读,通常会同时提供文章的标题 ...

  8. html HTML1300 进行了导航,jquery根据文章H标签自动生成导航目录

    jquery根据文章H标签自动生成导航目录2017-11-19 20:57 在一些旅游网站,比如说途牛.携程这些,当你看某条线路的详情页时,右边会有相应的第一天.第二天等的目录. 这么大的网站,不可能 ...

  9. python读取word文档结构图_python根据文章标题内容自动生成摘分享的实例

    如何用Python玩转TF-IDF之寻找相似文章并生成摘要 应用1:关键词自动生成 核心思想是对于某个文档中的某个词,计算其在这个文档中的标准化TF值,然后计算这个词在整个语料库中的标准化IDF值.在 ...

最新文章

  1. java圆周率流程图,流程图、PI图入门知识 课件.doc
  2. SAP PM 入门系列之19 - IP31 Maintenance Plan Costing
  3. oracle数据库常用的99条查询语句
  4. 2021年春季学期-信号与系统-第十三次作业参考答案-第九小题
  5. php 实现一致性hash 算法 memcache
  6. mysql 源代码学习 博客 [lock..]
  7. Windows 编程[5] - 学习窗体生成的过程五
  8. python链表翻转_Python数据结构之旋转链表
  9. Linux Shell常用技巧(九)
  10. ASP生成HTML讲座笔记
  11. IOS开发之----常用函数和常数--秀清
  12. python基础十一之迭代器和生成器
  13. Android之自定义属性
  14. 【转】Unity3D研究院之设置自动旋转屏幕默认旋转方向
  15. 记次浙大月赛 134 - ZOJ Monthly, June 2014
  16. 系统学习NLP(二十七)--EMLo
  17. SnippetsLab:让代码信手拈来
  18. FBI也没辙?超强加密软件TrueCrypt全教程
  19. fragstats移动窗口
  20. SIM868_GNSS结果解析

热门文章

  1. 看看这篇U盘防毒的文章吧,希望对你有用。
  2. cocos creator 3d 3.0《懒猫跑酷》 实战开发教程
  3. 信息时代,为什么还读纸质书
  4. 过孔解析 分类 特征 作用
  5. 一份超全的Python学习资料汇总
  6. 凡是过往,皆为序章|Apache Doris 社区 2021 年终回顾
  7. 基于PP-ShiTu的零售商品结算系统设计与在Jetson Nano上部署推理使用
  8. linux 静态路由 优先级,静态路由与路由规则优先级的问题
  9. 2022最新html5+css3笔记
  10. PKS部署难点:NSX Manager API证书