找到/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字符串开始找到.或!或。的位置截取
修改后上传后台更新缓存就可