请登录后探索更多精彩内容!
找到/view/htm/thread.htm
在最上面也就是<?php include _include(APP_PATH.'view/htm/header.inc.htm');?>前,新增下面代码:
<?php function substrWithPunctuation($str, $maxLen = 100, $startPos = 60, $punctuations = ['.', '!','。']) { $len = mb_strlen($str, 'UTF-8'); // 获取字符串长度(按字符) $subStr = ''; if ($len <= $maxLen) { // 如果字符串长度小于等于最大长度,直接返回 return $str; } // 从startPos开始向后查找标点符号 $found = false; for ($i = $startPos; $i < $len; $i++) { $char = mb_substr($str, $i, 1, 'UTF-8'); // 取出当前字符 // 检查字符是否为指定的标点符号 if (in_array($char, $punctuations)) { // 如果找到标点符号,则截取从字符串开始到该标点符号之前的所有字符 $subStr = mb_substr($str, 0, $i + mb_strlen($char, 'UTF-8'), 'UTF-8'); $found = true; break; } } // 如果没有找到标点符号,则直接截取前maxLen个字符 if (!$found) { $subStr = mb_substr($str, 0, 80, 'UTF-8'); } // 如果截取后的字符串末尾是空格,则去除空格(这一步是可选的,取决于您的具体需求) $subStr = rtrim($subStr); return $subStr; } $description = $first['message_fmt']; $description = strip_tags($description); $description = substrWithPunctuation($description); $header['description'] = $description; ?>
其中substrWithPunctuation是把帖子中的内容从60字符串开始找到.或!或。的位置截取修改后上传后台更新缓存就可
代码优化:1、新增去除多余的换行及空格符号:<?phpfunction substrWithPunctuation($str, $maxLen = 100, $startPos = 60, $punctuations = ['.', '!','。']) { $len = mb_strlen($str, 'UTF-8'); // 获取字符串长度(按字符) $subStr = ''; if ($len <= $maxLen) { // 如果字符串长度小于等于最大长度,直接返回 return $str; } // 从startPos开始向后查找标点符号 $found = false; for ($i = $startPos; $i < $len; $i++) { $char = mb_substr($str, $i, 1, 'UTF-8'); // 取出当前字符 // 检查字符是否为指定的标点符号 if (in_array($char, $punctuations)) { // 如果找到标点符号,则截取从字符串开始到该标点符号之前的所有字符 $subStr = mb_substr($str, 0, $i + mb_strlen($char, 'UTF-8'), 'UTF-8'); $found = true; break; } } // 如果没有找到标点符号,则直接截取前maxLen个字符 if (!$found) { $subStr = mb_substr($str, 0, 80, 'UTF-8'); } // 如果截取后的字符串末尾是空格,则去除空格(这一步是可选的,取决于您的具体需求) $subStr = rtrim($subStr); return $subStr; }$description = $first['message_fmt']; $description = strip_tags($description);$description = str_replace(["\r", "\n", "\t", ' '], '', $description);$description = substrWithPunctuation($description);$header['description'] = $description;?>
请先登录后发表评论!