相信现在很多网站都有文章功能,有文章就基本上少不了要有个列表页,网页设计师们对文章列表页的设计也是五花八门,各有各的创意,那我们就拿ThinkPHP旗下的极思维平台的列表页来说,极思维的目前的列表页是这样的:
大家可以看到,它的布局是块形式展现,每篇文章都是固定的布局,图片,标题,简介,如果说每篇文章在发布的时候都要单独的写个简介,单独上传个封面图,对编辑者来说就有些麻烦了,那我们就可以通过程序让它自动去抓取封面和简介,自动抓取缩略图我在之前的文章有讲过,大家可以去找下我之前的《ThinkPHP之自动获取文章内容中的第一张图片做为缩略图》这篇文章,今天我们主要讲如何自动抓取文章的部分内容作为文章的简介 。
我们先来分析一下功能的实现原理,所谓简介,就是简单的说明一下这篇文章的主要内容,不涉及到排版,所以我们只需要纯文字,那么问题来了,之前我们在抓取缩略图的文章中我们也有说到,文章内容是由编辑器进行排版的,既然有排版样式,就必定要有HTML样式,只要保留文字就得把所有的HTML标签都去掉,那怎么去掉呢?
不用急,PHP有个专门去掉HTML的函数,这个函数就是 strip_tags,我们先来看一下这个函数是什么样的:
在以上代码中可以看到,内容中有个 标签, 标签的作用就是字体加粗,我们运行一下实例看下:
可以很明显的看到使用了 strip_tags 函数和没使用 strip_tags 函数的区别,那是不是直接在ThinkPHP中用这个函数就够了呢,写过文章的人都知道,文章会涉及到换行、空格等格式,strip_tags 函数只能去掉HTML标签,并不能去掉换行、空格等格式,那么怎么样才能去掉换行和空格呢,别担心,强大的PHP也有函数来处理这些东西的,PHP中有个正则替换函数叫做 ereg_replace,这个函数可以把指定的字符换成我们想要的字符,那么我们的逻辑代码就可以这样写:
从上面的逻辑代码中,我们可以看到替换换行符中处理了三次替换,这是为什么呢,因为现在服务器系统有很多种,最常用的就有windows、linux两种系统,这两种系统的换行符是不同的,所以为了兼容不同的服务器,我们就多替换几次,其中 rn 是替换 linux 和 unix 系统的换行符,n 是替换 windows 系统的换行符,r 是替换苹果系统的换行符的 。
处理好了HTML之后,接下来我们就要截取内容了,因为文章字数有多有少,既然是简介,那我们肯定就只要截取一小段文字了,比如只要50个字或者100个字这样,因为编程基本都是用英文编写的,对中文的识别较差,所以在编程计算长度时,一个中文汉字是算两个字符的,所以如果我们要截取50个中文的话,截取长度就是乘以二,那就是100了,其实这都不算什么问题,但是在实际过程中,按这样的方式去截取的话,遇到文章包含中英文的时候就可能会出现乱码的情况,为了避免出现乱码,我们可以用一个非PHP核心函数 mb_strlen 来解决,为什么说 mb_strlen 是非PHP核心函数呢,因为在使用 mb_strlen 函数前需要确保在 php.ini 中有加载 php_mbstring.dll,要不然就会出现 未定义函数 的问题,那我们就来把上面的代码改进一下,加上截取字数的功能,得到代码如下:
推荐阅读
- http://v.hoopchina.com/v21892.html
- 后宫秘史服装搭配 相邻两个属性相克
- 命令方块毁灭弓指令 毁灭弓属性id指令
- 喵将传豹子头林冲属性技能介绍 属性怎么样,专属技能又是什么呢
- rfid电子标签是什么意思
- 谁能帮我把www.dj520.com里面的http://new.dj520.com/DJ_Html/Dj520_84524.html连接地址发给我529900926!
- 钛晶五行属什么 钛晶五行属性介绍
- 羽属于五行属什么 羽的五行属性介绍
- 魔兽盗贼t1套t2套属性对比 不是一个档次的?
- 十二生肖属性知识大全 十二生肖基础知识