最近在做一个项目,其中一部分的内容就是文章内容跟微博的同步,即在发布文章时,同步更新到微博。 需要解决的问题之一就是判断文章内容的长度,因为微博(包括新浪微博和腾讯微博)都有字数限制,不能超过140字,如果超过了,就会发布失败。 但微博的字数统

最近在做一个项目,其中一部分的内容就是文章内容跟微博的同步,即在发布文章时,同步更新到微博。

需要解决的问题之一就是判断文章内容的长度,因为微博(包括新浪微博和腾讯微博)都有字数限制,不能超过140字,如果超过了,就会发布失败。

但微博的字数统计方法又有点特殊,其将中文字符作为一个长度,英文、数字、标点符号等两个为一个长度。PHP中常用的字数统计函数有strlen和mb_strlen等,在strlen函数中,统计得到的是字符串所占的字节数,其对待一个UTF8编码的中文字符是3个字节的长度,对于GB2312的中文编码,得到的则是2个字节长度,英文则是一个字节的长度;而在mb_strlen函数中,中英文都会被计算为一字节的长度。因此,使用PHP自带的函数进行微博内容字数统计,显然会造成统计结果错误。

解决方案

PHP版微博内容字数统计函数如下:

/*

//获取微博字符长度

*/

function WeiboLength($str)

{

$arr = arr_split_zh($str); //先将字符串分割到数组中

foreach ($arr as $v){

$temp = ord($v); //转换为ASCII码

if ($temp > 0 && $temp < 127) {

$len = $len+0.5;

}else{

$len ++;

}

}

return ceil($len); //加一取整

}

/*

//拆分字符串函数,只支持 gb2312编码

//参考:http://u-czh.iteye.com/blog/1565858

*/

function arr_split_zh($tempaddtext){

$tempaddtext = iconv("UTF-8", "GBK//IGNORE", $tempaddtext);

$cind = 0;

$arr_cont=array();

for($i=0;$i0){

if(ord(substr($tempaddtext,$cind,1)) < 0xA1 ){ //如果为英文则取1个字节

array_push($arr_cont,substr($tempaddtext,$cind,1));

$cind++;

}else{

array_push($arr_cont,substr($tempaddtext,$cind,2));

$cind+=2;

}

}

}

foreach ($arr_cont as &$row)

{

$row=iconv("gb2312","UTF-8",$row);

}

return $arr_cont;

}

说明

将字符串分割到数组中,不能简单地使用str_split等函数,分割英文字符串还行,但对待中/英文以及数字/符号等混编的内容来说,会生成完全乱码的内容。

基于第一点,本文使用了http://u-czh.iteye.com/blog/1565858一文中提供的字符串拆分函数,但在实际使用过程中,发现对于一些经过strip_tags函数过滤后的内容,会生成乱码的内容,本文的解决方案是将:$tempaddtext = iconv("UTF-8", "gb2312", $tempaddtext); 修订为:$tempaddtext = iconv("UTF-8", "GBK//IGNORE", $tempaddtext);

测试结果

使用如下一段文本进行测试。

#IT资讯#众所周知微软非常渴望缓解Windows 8/8.1系统占比不高的尴尬,已经迫不及待的想要介绍精心改良的Windows 9操作系统,但是这一天还需要再等待一段时间。因为根据NPD集团在今年的返校季调查结果显示最大的赢家并不是Windows PC,而是Mac和Chromebooks。

新浪微博统计结果如下:

统计结果为120个字符。

接下来,分别使用三个函数的测试结果如下:

本文函数的统计结果与微博的统计结果一致。

目前的使用过程中还都正常,不排除一些情况下会出现异常,望大家反馈。

php统计字数函数,微博内容字数统计函数(PHP版)相关推荐

  1. php统计字数指定位置,php实现的统计字数函数定义与使用示例

    本文实例讲述了php实现的统计字数函数定义与使用方法.分享给大家供大家参考,具体如下: //函数定义: function countWords($str){ echo (mb_strlen($str, ...

  2. html 实时计算字数,JavaScript 实现textarea限制输入字数, 输入框字数实时统计更新,输入框实时字数计算移动端bug解决...

    textarea称文本域,又称文本区,即有滚动条的多行文本输入控件,在网页的提交表单中经常用到.与单行文本框text控件不同,它不能通过maxlength属性来限制字数,为此必须寻求其他方法来加以限制 ...

  3. JavaScript 实现textarea限制输入字数, 输入框字数实时统计更新,输入框实时字数计算移动端bug解决...

    textarea称文本域,又称文本区,即有滚动条的多行文本输入控件,在网页的提交表单中经常用到.与单行文本框text控件不同,它不能通过maxlength属性来限制字数,为此必须寻求其他方法来加以限制 ...

  4. 微博php学历限制,微博输入字数限制功能

    摘要:html> body{font-size:12px;} .box{width:600px; height:160px; border:10px solid&nbhtml> b ...

  5. js-仿微博输入框字数检测

    js-仿微博输入框字数检测 ? <span style= "color: rgb(51, 51, 0);" > /* 暂时不支持鼠标复制检测,但可以通过设置定时器或者b ...

  6. 疫情微博内容情感分析

    一.前言 最近,碰到一个疫情微博情感分类的任务看到挺有意思的,就试了试手,顺便记录了下整个实验的全过程,话不多说,请看下文. 二.数据集简介与预处理 2.1 数据集简介 数据集为疫情期间在微博收集的, ...

  7. 张俊林:对比学习在微博内容表示的应用

    点击下面卡片,关注我呀,每天给你送来AI技术干货! 分享嘉宾:张俊林博士 新浪微博 编辑整理:李桂荣 中南财经政法大学 出品平台:DataFunTalk 点这里:当知识图谱遇上预训练语言模型 -- 留 ...

  8. Pandas知识点-统计运算函数

    Pandas知识点-统计运算函数 统计运算非常常用.本文介绍Pandas中的统计运算函数,这些统计运算函数基本都可以见名知义,使用起来非常简单. 本文使用的数据来源于网易财经,具体下载方法可以参考:h ...

  9. python爬取微博用户的微博内容和图片

    想保存自己喜欢的idol微博图片,但是一张张自己保存太慢,怎么办?想保存微博博主的所有表情包,怎么才能快速把这些表情包下载到本地呢?想分析某位博主的发博规律,要分析博主所有微博信息怎么做? 这就要用到 ...

最新文章

  1. Heartbeat+DRBD+NFS案例详解
  2. 电路基础知识 -- 三态
  3. 注入dll到一个进程里面
  4. JAVAAPI学习之Calendar类;Calendar类set()、add()、roll()方法区别
  5. android JNI调用(Android Studio 3.0.1)(转)
  6. window.open使用中遇到的问题
  7. 判断三个数是否能构成三角形_【内含干货】611. 有效三角形的个数
  8. 用mysql web建立论坛_在web1上搭建Discuz论坛
  9. 怎么定义int_「C语言更新」C语言中如何来定义一个指针,并且对其进行初始化...
  10. ds90ub934 i2c 配置_DS90UB934-Q1 FPD-Link III 解串器 摄像头、环视系统应用
  11. 百度引流推广怎么做?个人如何做百度推广
  12. 机器学习中常见的几种归一化方法以及原因
  13. 侯捷-C++面向对象高级开发(操作符重载与临时对象)
  14. 公众号快速涨粉方法汇总
  15. 细说网络负载均衡技术
  16. 微信小程序图片前端压缩(canvas)
  17. 怎样用PS修改图片上的数字
  18. spark写mysql优化简书_spark读写mysql、hive、kafka数据demo
  19. 解秘华为:肯给养出最拼团队
  20. 东胜区智慧城市管理运行初见端倪

热门文章

  1. uniapp判断是否打开定位GPS
  2. [hdu-1814] Peaceful Commission题解
  3. 计算机网络/谢希仁(第八版)第三章习题
  4. Endnote中文参考文献格式
  5. 要怎么在计算机里清除桌面内存,怎么清理运行内存占用_怎么清理电脑运行内存-win7之家...
  6. [Excel] 用sumproduct函数实现数据透视表功能
  7. 使用hutool进行Unicode转换
  8. MybatisX的使用方法
  9. 引爆社群:移动互联网时代的新4C法则
  10. mac时间机器文件服务器,使用时间机器备份文件 - 处理文件和文件夹 - macOS使用手册...