设为首页
收藏本站
用户名
Email
自动登录
找回密码
密码
登录
立即注册
只需一步,快速开始
快捷导航
登录
注册
论坛首页
BBS
建站模版
微站设计
虚拟主机
企业邮箱
博客日志
Blog
搜索
搜索
搜索
热搜
长春
优惠
活动
做网站
本版
帖子
用户
本版
帖子
用户
请
登录
后使用快捷导航
没有帐号?
立即注册
道具
勋章
任务
留言板
设置
我的收藏
退出
时时商务社区
»
论坛首页
›
建站资源
›
建站技术
›
php截取字符串之截取utf8或gbk编码的中英文字符串示例 ...
返回列表
查看:
232
|
回复:
0
php截取字符串之截取utf8或gbk编码的中英文字符串示例
[复制链接]
网络通达
当前离线
积分
7881
2647
主题
2647
帖子
7881
积分
论坛元老
论坛元老, 积分 7881, 距离下一级还需 9992118 积分
论坛元老, 积分 7881, 距离下一级还需 9992118 积分
积分
7881
发消息
电梯直达
楼主
发表于 2018-2-14 05:59:49
|
只看该作者
|
倒序浏览
|
阅读模式
微博的发言有字数限制,其计数方式是,中文算2个,英文算1个,全角字符算2个,半角字符算1个。
php中自带strlen是返回的字节数,对于utf8编码的中文返回时3个,不满足需求。
mb_strlen 可以根据字符集计算长度,比如utf8的中文计数为1,但这不符合微博字数限制需求,中文必须计算为2才可以。
google了下,找到一个discuz中截取各种编码字符的类,改造了下,已经测试通过.其中参数$charset 只支持gbk与utf-8。
[U]复制代码[/U] 代码如下:
$a = "s@@你好";
var_dump(strlen_weibo($a,'utf-8'));
结果输出为8,其中字母s计数为1,全角@计数为2,半角@计数为1,两个中文计数为4。源码如下:
[U]复制代码[/U] 代码如下:
function strlen_weibo($string, $charset='utf-8')
{
$n = $count = 0;
$length = strlen($string);
if (strtolower($charset) == 'utf-8')
{
while ($n = $length)
{
break;
}
}
return $count;
} else
{
for ($i = 0; $i 127)
{
$i++;
$count++;
}
$count++;
}
return $count;
}
}
您可能感兴趣的文章:
PHP 中英文混合排版中处理字符串常用的函数
php strlen mb_strlen计算中英文混排字符串长度
php中计算中文字符串长度、截取中文字符串的函数代码
使用php统计字符串中中英文字符的个数
PHP字符串长度计算 - strlen()函数使用介绍
PHP 字符串长度判断效率更高的方法
php轻松实现中英文混排字符串截取
PHP获取中英混合字符串长度的方法
利用PHP函数计算中英文字符串长度的方法
PHP判断字符串长度的两种方法很实用
PHP指定截取字符串中的中英文或数字字符的实例分享
PHP针对中英文混合字符串长度判断及截取方法示例
分享到:
QQ好友和群
QQ空间
腾讯微博
腾讯朋友
收藏
0
回复
使用道具
举报
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
用户反馈
客户端