整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

ThinkPHP之去掉文章中的所有HTML标签并截取部分内容作为简介

了让初学者更容易理解,本文写的比较详细,所以如果你已是技术大拿,请直接绕过,以免浪费你的宝贵时间,谢谢。

相信现在很多网站都有文章功能,有文章就基本上少不了要有个列表页,网页设计师们对文章列表页的设计也是五花八门,各有各的创意,那我们就拿ThinkPHP旗下的极思维平台的列表页来说,极思维的目前的列表页是这样的:

大家可以看到,它的布局是块形式展现,每篇文章都是固定的布局,图片,标题,简介,如果说每篇文章在发布的时候都要单独的写个简介,单独上传个封面图,对编辑者来说就有些麻烦了,那我们就可以通过程序让它自动去抓取封面和简介,自动抓取缩略图我在之前的文章有讲过,大家可以去找下我之前的《ThinkPHP之自动获取文章内容中的第一张图片做为缩略图》这篇文章,今天我们主要讲如何自动抓取文章的部分内容作为文章的简介。

我们先来分析一下功能的实现原理,所谓简介,就是简单的说明一下这篇文章的主要内容,不涉及到排版,所以我们只需要纯文字,那么问题来了,之前我们在抓取缩略图的文章中我们也有说到,文章内容是由编辑器进行排版的,既然有排版样式,就必定要有HTML样式,只要保留文字就得把所有的HTML标签都去掉,那怎么去掉呢?

不用急,PHP有个专门去掉HTML的函数,这个函数就是 strip_tags ,我们先来看一下这个函数是什么样的:

在以上代码中可以看到,内容中有个 <b> 标签,<b> 标签的作用就是字体加粗,我们运行一下实例看下:

可以很明显的看到使用了 strip_tags 函数和没使用 strip_tags 函数的区别,那是不是直接在ThinkPHP中用这个函数就够了呢,写过文章的人都知道,文章会涉及到换行、空格等格式,strip_tags 函数只能去掉HTML标签,并不能去掉换行、空格等格式,那么怎么样才能去掉换行和空格呢,别担心,强大的PHP也有函数来处理这些东西的,PHP中有个正则替换函数叫做 ereg_replace ,这个函数可以把指定的字符换成我们想要的字符,那么我们的逻辑代码就可以这样写:

从上面的逻辑代码中,我们可以看到替换换行符中处理了三次替换,这是为什么呢,因为现在服务器系统有很多种,最常用的就有windows、linux两种系统,这两种系统的换行符是不同的,所以为了兼容不同的服务器,我们就多替换几次,其中 \r\n 是替换 linux 和 unix 系统的换行符,\n 是替换 windows 系统的换行符,\r 是替换苹果系统的换行符的。

处理好了HTML之后,接下来我们就要截取内容了,因为文章字数有多有少,既然是简介,那我们肯定就只要截取一小段文字了,比如只要50个字或者100个字这样,因为编程基本都是用英文编写的,对中文的识别较差,所以在编程计算长度时,一个中文汉字是算两个字符的,所以如果我们要截取50个中文的话,截取长度就是乘以二,那就是100了,其实这都不算什么问题,但是在实际过程中,按这样的方式去截取的话,遇到文章包含中英文的时候就可能会出现乱码的情况,为了避免出现乱码,我们可以用一个非PHP核心函数 mb_strlen 来解决,为什么说 mb_strlen 是非PHP核心函数呢,因为在使用 mb_strlen 函数前需要确保在 php.ini 中有加载 php_mbstring.dll,要不然就会出现 未定义函数 的问题,那我们就来把上面的代码改进一下,加上截取字数的功能,得到代码如下:

然后,我们以ThinkPHP3.2为例,把上面的自定义函数方法添加到ThinkPHP框架中核心公共函数目录(Common)里的 functions.php 文件的最后面即可。

调用方法为:{$vo.content|cutstr_html=###,100}

上面调用方法中的 ### 是表示文章内容,100为要截取的字数长度。

谢谢你的阅读,如果你有更好的方法或在应用过程中遇到问题可以在评论区提问或者直接私信我,我会定期回复,码农刘小桥与你一起学习,共同进步。

一篇文章讲解“模型-内置标签之条件标签”,本篇文章讲解“模板-内置标签之资源文件加载”。


资源文件加载

资源文件加载即是在模板中引入CSS、JS等资源文件。

传统方式的导入外部JS和CSS文件的方法是直接在模板文件使用:

1. load标签

系统提供了专门的标签来简化上面的导入:

①新建Index控制器,并新建index方法

②新建index.html模板,并引入资源文件

③新建script.js与style.css资源文件

script.js文件:

style.css文件:

注意:

1. ThinkPHP中资源文件的位置为“public/static/”下。

预览:

④配合“模板输出替换”使用

由于文件路径不对,导致资源文件加载失败,可以配合模板输出替换使用。

在config/template.php文件中,定义模板输出替换:

⑤在index.html模板中使用模板输出替换

预览:


2. 同时加载多个资源文件

在index.html模板中,使用load标签同时加载多个资源文件。

预览:

注意:

1. load标签支持同时加载多个资源文件,文件之间用逗号隔开。


3. js与css标签

系统还提供了两个标签别名js和css,用法和load一致。

在index.html模板文件中,使用js与css标签加载资源文件。

预览:

ThinkPHP5连载为卓象程序员原创,转载请联系卓象程序员

关注卓象程序员,定期发布技术文章

下一篇讲解“模板-内置标签之标签嵌套+原生PHP”

些天向大家分享了一些ThinkPHP操作数据库的教程,不过一下子要记住这么多东西不是一件容易的事情,所以大家需要在实战中边开发边学习,才能更轻松的掌握技能。今天,我要向大家分享如何使用ThinkPHP模版标签来实现循环输出功能。

图片来自网络

ThinkPHP内置很多模版标签,今天我只向大家分享循环输出标签。以后会逐渐分享其他常用模板标签的用法。

ThinkPHP内置模版标签

Foreach

Foreach标签用来循环输出数据,通常用于输出数据库select查询结果,如下所示。

控制器代码

模板代码

最终输出结果如下:

输出结果

在foreach标签中,name为控制器赋值的变量名(users),item为循环内的变量名(user)。

Volist

Volist标签与Foreach类似,不过它拥有更多用法,最基本用法如下:

Volist基本用法

输出结果

可以看到,Volist标签中只是把item换成id,其他完全相同。

但是如果我们只需要输出第1-10(注意数组是从0开始的)条数据,可以这样用:

Volist的offset用法

输出结果

如果数据为空时,我们还可以使用empty属性来输出指定信息:

Volist的empty用法

输出结果

由于我们使用Table来输出数据,而empty不支持直接传入html标签,所以“无用户信息”被解析到了table外。我们可以这样解决:

控制器赋值empty

Volist的empty接收变量

输出结果

For

for标签的用法很简单,如下:

<for start="开始值" end="结束值" step="步进值" name="循环变量名" >输出内容</for>

开始值、结束值、步进值和循环变量都可以支持变量,开始值和结束值是必须,其他是可选。name的默认值是i,步进值的默认值是1,举例如下:

for标签用法

输出结果

结论

在开发中,我们需要经常用到循环输出功能,掌握循环输出的用法志在必得。

如果您觉得小编的教程对您有所帮助,请点击关注支持小编,您的关注是对小编最大的鼓励。