微构网络

长沙论坛开发:说说Discuz字符串截取的那些事

2014-12-31 11:38 栏目:技术教程 查看(7,166)

在我们一个网站建设项目中通常需要进行一些文字长度的限制,这就是我们常说的字符串截取。比如说一段文章的摘要,在A页面可能是显示的200个字,在B页面可以只需要100个字。如果我们为了这个差异而去做几次程序的功能,那显然有点吃亏或者不划算。因此我们通常采取的方式都是把摘要信息存入一个变量中,当然包含的字符数量通常是我们需要应用的最大数量。

比如下面是两种不同的列表方式,而其中的摘要部分就是Discuz的摘要,上面的是输出所有的字数,而后面一部分是截取一部分输出(因为如果后面那个也输出全部的话显然不够美观。)

长沙论坛开发:说说Discuz字符串截取的那些事 长沙论坛开发:说说Discuz字符串截取的那些事

那么这个时候问题来了,究竟该如何来截取这个字符串才能更加符合我们的要求。如果同时了解前端和后端开发的朋友会有以下解决方案:通过CSS和PHP的任何一种来解决。

首先来说CSS,我们知道CSS完全也可以实现截取的字符串的目的,那那实际上不算作截取,只能算是“隐藏”多余的部分,而在上面两张图片的下面一张中,我们发现我们在处理的时候故意在三行文字的最后一行不充满,如果是CSS就不能这样,只能是充满状态。除此之外,有时候用CSS来“隐藏”会不太好操作。

再来聊聊PHP操作,我们知道不管是JS也好,还是PHP也好,甚至是其他的诸如java等语言。都有系统内置的很多方法,而其中也必定包括了截取字符串的方法。

可能大家一开始就会想到的是substr,当然也是我们经常用到的。但在这里就有一个问题,因为编码的问题会导致输出乱码,有朋友说我会处理这个问题,对!没错可以处理,但是作为官方认证的开发者肯定不要忘记DZ的规范,不能在前台模版文件中写入过多的PHP代码,特别执行一些功能的。简而言之,就是你处理了,可能就不符合Discuz二次开发规范了。

接着就会想到了mb_substr了,这个方法很多人也熟悉,而且我发现很多Wordpress模版中就使用到它,当然似乎是WordPress进行加工后的这个函数。mb_substr相对substr多了一个编码识别,但是可能有的用户的服务器都没打开php_mbstring.dll(当然我们的打开了)。

然后看到了Discuz在论坛首页模版文件discuz.htm中有截取板块最新发布文章的标题,而使用到的函数就是cutstr,而这个其实就是Discuz内置的一个方法。因此综合起来说,在Discuz中直接用这个是靠谱的,当然我也在网上看到一些朋友说,其实DZ的这个函数也有BUG。但对于基于Discuz来做二次开发,我想这已经不是什么问题了。

 

转载请注明出处:长沙论坛开发:说说Discuz字符串截取的那些事 - 微构网络
分享:

您可能遇到的问题?

搜索微构网络的干货:

值班:15574303608 业务:在线咨询 技术:在线咨询

电话:0731-83862683 售后:在线咨询 邮箱:server@csweigou.com

地址:长沙市五一西路锦绣中环1116(五一广场平和堂对面)