utf-8 字符串下页面的标题 缩JJ的长度 只剩下 80/3=26 个汉字了 不过 其实26个也不算短了 MJJ的觉得还是不够用。 随要求可以 修改 长度 。
做个简单的 修改 完成了 此次的 ticket:
//缩JJ 的 在mysql中存储 不管是中文还是英文还是 中文又区分 gbk 或者utf-8 之类的 varchar 都算1个字符 在其他存储的时候 utf-8 中文字节是3个字节 gbk中文是2个字节 我们再这里稍微的调皮的 改动了下 计算内容的长度 代码 就可以了。 好这真的不是恶搞。 //bbs/static/js/common.js function strLenCalc(obj, checklen, maxlen) { var v = obj.value, charlen = 0, maxlen = !maxlen ? 200 : maxlen, curlen = maxlen, len = strlen(v); for(var i = 0; i < v.length; i++) { if(v.charCodeAt(i) < 0 || v.charCodeAt(i) > 255) { curlen -= charset == 'utf-8' ? 1 : 1; } } if(curlen >= len) { $(checklen).innerHTML = curlen - len; } else { obj.value = mb_cutstr(v, maxlen, 0); } } // bbs/source/function/function_core.php function dstrlen($str) { if(strtolower(CHARSET) != 'utf-8') { return strlen($str); } $count = 0; for($i = 0; $i < strlen($str); $i++){ $value = ord($str[$i]); if($value > 127) { $count++; if($value >= 192 && $value <= 223) $i++; elseif($value >= 224 && $value <= 239) $i = $i + 2; elseif($value >= 240 && $value <= 247) $i = $i + 3; } //$count++; } return $count; }
下面转载个我调研的关于 discuz 修改标题长度的方法:
数据库操作: pre_forum_thread pre_forum_post 的字段 subject ALTER TABLE tablename MODIFY subject varchar(200); 文件修改 1、/source/function/fuction_post.php 修改函数checkpost($subject,$message, $special = 0) 在该函数中查找 if(strlen($subject) > 80) { return 'post_subject_toolong'; } 2、/source/language/lang_message.php 修改 'post_subject_toolong' => '对不起,你的标题超过80个字符,请返回修改标题长度。' 3、/static/js/forum_post.js 修改函数validate(theform) 查找 elseif(mb_strlen(theform.subject.value) > 80) { showDialog('您的标题超过 80 个字符的限制'); returnfalse; } 4、template/default/forum/post.htm 查找:onkeyup="strLenCalc(this,'checklen', 80);" {lang comment_message1}80{lang comment_message2} 更老版本 include/post.func.php include/javascript/post_editor.js modcp/editposts.inc.php default/viewthread.htm default/forumdisplay.htm default/templates.lang.php default/messages.lang.php