xiunobbs修罗论坛 帖子页加Description描述的方法

admin 2024-09-10 16:31:08 87

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


最新回复 (0)
返回
发新帖