找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 6104|回复: 0

discuz字符串截取函数messagecutstr()详解

[复制链接]
发表于 2016-12-12 19:57:42 | 显示全部楼层 |阅读模式
大家好,我是DZ起点网技术帮助(X.z)今天给大家分析下当我们在二次开发Discuz的时候,需要使用到调用简介的时候,可以使用Discuz自带的内容处理函数
  1. messagecutstr($str, $length, $dot)
复制代码
参数解释:
$str           要处理的字符串对象
$length     要保留的长度
$dot         超出部分用什么代替

举例:

  1. <div>$str = 'DZ起点网就是好,学习Dsicuz少不了!';</div><div>$length = 8;</div><div>$dot = '+更多Discuz教程请百度搜索“DZ起点网”!';</div><div>
  2. </div><div>echo messagecutstr($str, $length, $dot);</div>
复制代码
如图: QQ截图20161212195359.png
此时会输出
DZ起点网+更多Discuz教程请百度搜索“DZ起点网”!

如图:

QQ截图20161212195600.png

特别声明,如果你使用messagecutstr()函数不起作用时,不放试试将
  1. include_once libfile('function/post');
复制代码
这段代码引入,因为你messagecutstr()函数是在“function/post”中定义的!

messagecutstr()完整的函数定义如下:
  1. function messagecutstr($str, $length = 0, $dot = ' ...') {
  2.         global $_G;
  3.         $str = messagesafeclear($str);
  4.         $sppos = strpos($str, chr(0).chr(0).chr(0));
  5.         if($sppos !== false) {
  6.                 $str = substr($str, 0, $sppos);
  7.         }
  8.         $language = lang('forum/misc');
  9.         loadcache(array('bbcodes_display', 'bbcodes', 'smileycodes', 'smilies', 'smileytypes', 'domainwhitelist'));
  10.         $bbcodes = 'b|i|u|p|color|size|font|align|list|indent|float';
  11.         $bbcodesclear = 'email|code|free|table|tr|td|img|swf|flash|attach|media|audio|groupid|payto'.($_G['cache']['bbcodes_display'][$_G['groupid']] ? '|'.implode('|', array_keys($_G['cache']['bbcodes_display'][$_G['groupid']])) : '');
  12.         $str = strip_tags(preg_replace(array(
  13.                         "/\[hide=?\d*\](.*?)\[\/hide\]/is",
  14.                         "/\[quote](.*?)\[\/quote]/si",
  15.                         $language['post_edit_regexp'],
  16.                         "/\[url=?.*?\](.+?)\[\/url\]/si",
  17.                         "/\[($bbcodesclear)=?.*?\].+?\[\/\\1\]/si",
  18.                         "/\[($bbcodes)=?.*?\]/i",
  19.                         "/\[\/($bbcodes)\]/i",
  20.                 ), array(
  21.                         "[b]$language[post_hidden][/b]",
  22.                         '',
  23.                         '',
  24.                         '\\1',
  25.                         '',
  26.                         '',
  27.                         '',
  28.                 ), $str));
  29.         if($length) {
  30.                 $str = cutstr($str, $length, $dot);
  31.         }
  32.         $str = preg_replace($_G['cache']['smilies']['searcharray'], '', $str);
  33.         if($_G['setting']['plugins']['func'][HOOKTYPE]['discuzcode']) {
  34.                 $_G['discuzcodemessage'] = & $str;
  35.                 $param = func_get_args();
  36.                 hookscript('discuzcode', 'global', 'funcs', array('param' => $param, 'caller' => 'messagecutstr'), 'discuzcode');
  37.         }
  38.         return trim($str);
  39. }
复制代码



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|Discuz代码分析|Discuz目录结构|DZ起点网 ( 蜀ICP备13000518号-15 )

GMT+8, 2024-12-23 11:41 , Processed in 0.049390 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表