求助,CKEditor如何统计文字数量

klose1118 2011-06-28 05:27:20
我用的是3.4的版本
CKEDITOR.instances.articleContent.getData();获取的是HTML源码模式下的字符数量
求教如何在编辑模式下获得文字数量
...全文
419 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Inpool 2011-06-29
  • 打赏
  • 举报
回复
一般可视化编辑器生成的代码不会有格式问题导致的多余空格,如果是一般化的html代码(直接以代码模式编辑)就比较麻烦,目前就考虑到这么多情况,更多的情况自己分析,比如<pre>标签等更复杂的情况可能要用到中间值并分步替换,要注意的是不能影响后面的替换:
var htmlStr = CKEDITOR.instances.articleContent.getData();
var len = htmlStr
.replace(/\s+/," ") //将多个空字符换成一个空格
.replace(/<br\s*?\/?>/,".") //将所有换行符替换成一个字符(不用\n是因为可能会被后面换掉)
.replace(/(<\/p>)/,".$1") //为所有段落添加一个字符(或两个字符,自己定)将点放在前面避免影响后面的替换
.replace(/<\/.+?>\s*<[^\/]>/g,"") //去掉所有尾-首相连的HTML标签(包括中间的空字符)
.replace(/<.+?>/g,"") //去掉剩下的HTML标签
.replace(/&.+?;/g,".") //转换所有实体为一个字符
.length
萧华璋 2011-06-29
  • 打赏
  • 举报
回复
学习了!
Inpool 2011-06-29
  • 打赏
  • 举报
回复
前面几个忘了加g模式,顺便把pre一起处理了。
var htmlStr = CKEDITOR.instances.articleContent.getData();
var len = 0;
//处理pre
var pres = htmlStr.match(/<pre*.?>(.*?)<\/pre>/g);
htmlStr = htmlStr.replace(/<pre*.?>(.*?)<\/pre>/g,"");
if(pres)
len += pres.join("").length;
len += htmlStr
.replace(/\s+/g," ") //将多个空字符换成一个空格
.replace(/<br\s*?\/?>/g,".") //将所有换行符替换成一个字符(不用\n是因为可能会被后面换掉)
.replace(/(<\/p>)/g,".$1") //为所有段落添加一个字符(或两个字符,自己定)将点放在前面避免影响后面的替换
.replace(/<\/.+?>\s*<[^\/]>/g,"") //去掉所有尾-首相连的HTML标签(包括中间的空字符)
.replace(/<.+?>/g,"") //去掉剩下的HTML标签
.replace(/&.+?;/g,".") //转换所有实体为一个字符
.length
Inpool 2011-06-28
  • 打赏
  • 举报
回复
var len = CKEDITOR.instances.articleContent.getData()
.replace(/<.+?>/g,"") //去掉所有HTML标记
.replace(/&.+?;/g,".") //将所有HTML实体替换为"."(也可以为其他的单字),以确保只按一个字计算
.length
挨踢直男 2011-06-28
  • 打赏
  • 举报
回复
var regex = /<[^>]+>/g;
var html = CKEDITOR.instances.articleContent.getData();
var len = html.replace(regex,"").length;

len就是长度?这个意思吗?
weike021996 2011-06-28
  • 打赏
  • 举报
回复
空格,格式什么的都算在内吗?
ma1986 2011-06-28
  • 打赏
  • 举报
回复
要不就是2个字符对于一个文字,要不就用正则表达式,只保留中文的,存为字符串,求长度

87,909

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧