如何截取html的子字符串作为内容摘要
16lz
2021-01-22
在一些web应用中,如新闻、日志等需要在其列表中提供摘要信息,有些CMS系统中提供了摘要字段,在新闻发布时手动填写,但更为便捷的方式是直接截取内容的前面一段作为摘要信息。如果内容为纯字符型,不带任何格式,那便好办,直接取其前n个字符即可,但如果内容为html代码,且不一定能保证html代码一定符合规范,那便如何是好?
首先,不能直接截取,因为你可能会失去截取内容中已有标记的闭合标记,这样的摘要放在列表中会造成整个页面的html闭合失常
其次,前N个字符有可能全部是html标记,并非实际内容
再者,如果截断位置遇到img input等自闭合标签,需延长至其闭合的位置再截断
总的来说,不能贸然行事,需要探查敌情,敌情就在于,普通截取字符串实际截取位置和实际截取长度为同一个值,但html内容的截取位置大于或等于截取长度,截取长度应只考虑纯文本内容,而截取位置应将容纳了截取长度内纯文本的html标签字符数也计算在内,于是,有了如下方案:
定义截取长度、截取的子字符串 在截取长度>0的情况下,循环遍历html字符: 如果当前字符不处于标签中: #纯内容文本 截取长度-- 截取的子字符串 += 当前字符 #拼积截取字符串 返回截取的子字符串
更多相关文章
- 如果字符串包含html代码,如何用python检测?
- htmlhref属性最大支持多少个字符???(高分)
- HTML H5之ASCII 代码转义字符集实体编号
- 如何使用Java浏览和显示XML内容
- jquery将html转换为字符串和html
- 当内容宽度为自动时,隐藏滚动条(仍然能够滚动)不起作用
- js去除字符串中所有html标签及 符号
- 用JAVA从HTML标记中撕下子字符串
- jQuery scale div内容(嵌套div)