喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 喜悦证交所 | 帮助

RSS 订阅当前论坛  

$5.95 Web Hosting     

上一主题 下一主题
     
标题: [问题] 请教如何获取中文字符串长度?  
 
永远是新手
高级会员
Rank: 4



UID 80833
精华 0
积分 631
帖子 540
金钱 631 喜悦币
威望 0
人脉 0
阅读权限 50
注册 2006-10-1
状态 离线
[广告]: 代充Paypal帐号美元
请教如何获取中文字符串长度?

在MYSQL中,使用UTF-8时,一个汉字和一个英文的长度是一样的,但是在PHP中用strlen取长度,一个汉字是一个英文字母的四倍。现在我不能确定用户会输入中文还是英文,又想限制用户输入字符的长度,请问该怎么操作?
2007-9-14 06:16 PM#1
查看资料  Blog  发短消息  顶部
 
迎风
高级会员
Rank: 4
一二三四五,上山打老鼠


UID 66573
精华 0
积分 843
帖子 931
金钱 843 喜悦币
威望 0
人脉 0
阅读权限 50
注册 2005-9-11
状态 离线
[广告]: Enom域名自助付费 自助注册 自助PUSH 主流域名COM等一律57.99元年
utf-8汉字是英文的3倍,不是4倍
判断长度用mb_strlen




Azazazazazazazazazazazazazazazazazazazazazaz
2007-9-14 06:18 PM#2
查看资料  发短消息  顶部
 
永远是新手
高级会员
Rank: 4



UID 80833
精华 0
积分 631
帖子 540
金钱 631 喜悦币
威望 0
人脉 0
阅读权限 50
注册 2006-10-1
状态 离线
[推荐阅读] mysqlreport 介绍文档
收到,谢谢。
打小不会数数^_^
2007-9-14 06:44 PM#3
查看资料  Blog  发短消息  顶部
 
thesea
注册会员
Rank: 2
初级会员



UID 65841
精华 0
积分 144
帖子 107
金钱 144 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2005-8-14
来自 齐鲁大地
状态 离线
[推荐阅读] 如何设置PHP计划任务
用了mb_strlen()这个函数,就可以完美的解决截取中文字符串的问题了吧?



中国供求114网 国内绝对最专业的供求信息平台http://www.gq114.com
2007-9-15 11:05 AM#4
查看资料  访问主页  发短消息  顶部
 
shudehuiyi
新手上路
Rank: 1



UID 77001
精华 0
积分 37
帖子 38
金钱 37 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2006-7-25
状态 离线
[推荐阅读] 软件开发人员 (PHP) 上海外资公司急聘
<?
/*
* 中文截取,支持gb2312,gbk,utf-8,big5
*
* @param string $str 要截取的字串
* @param int $start 截取起始位置
* @param int $length 截取长度
* @param string $charset utf-8|gb2312|gbk|big5 编码
* @param $suffix 是否加尾缀
*/
public function csubstr($str, $start=0, $length, $charset="utf-8", $suffix=true)
{
if(function_exists("mb_substr"))
return mb_substr($str, $start, $length, $charset);
$re['utf-8'] = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/";
$re['gb2312'] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/";
$re['gbk'] = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/";
$re['big5'] = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/";
preg_match_all($re[$charset], $str, $match);
$slice = join("",array_slice($match[0], $start, $length));
if($suffix) return $slice."…";
return $slice;
}
?>
2007-9-18 01:38 PM#5
查看资料  发短消息  顶部
 
hero913 (文风大侠)
高级会员
Rank: 4
现在穷疯了,没钱


UID 70150
精华 0
积分 924
帖子 958
金钱 924 喜悦币
威望 0
人脉 0
阅读权限 50
注册 2006-3-23
状态 离线
[推荐阅读] 求救!php突然无法打开了!
mb_strlen()  非常好用~~~~~~~~



MSN:aaron-0913@hotmail.com
skype:chenqiangang
QQ:105915495
php我的最爱,希望志同道合的加我,聊一聊
给我留言
2007-9-18 04:50 PM#6
查看资料  访问主页  Blog  发短消息  QQ  顶部
 
sunjava (sunjava)
金牌会员
Rank: 6Rank: 6
资深会员


UID 19622
精华 0
积分 1264
帖子 1239
金钱 1264 喜悦币
威望 0
人脉 0
阅读权限 70
注册 2003-4-15
状态 离线
[推荐阅读] io操作和进程通信的问题
是很好用,但也有时候不好用,在截取字符串的时候即有中文也有英文的时候有点晕



PHP开发者,PHP新手社区
2007-9-18 05:32 PM#7
查看资料  访问主页  发短消息  QQ  顶部
 
wamper (wamper)
金牌会员
Rank: 6Rank: 6
资深会员


UID 23187
精华 0
积分 1036
帖子 1207
金钱 1036 喜悦币
威望 0
人脉 0
阅读权限 70
注册 2003-9-14
来自 北京
状态 离线
[推荐阅读] 招一两年的技术经理


QUOTE:
原帖由 sunjava 于 2007-9-18 05:32 PM 发表
是很好用,但也有时候不好用,在截取字符串的时候即有中文也有英文的时候有点晕
看一下 mb_strwidth
2007-9-18 05:48 PM#8
查看资料  发短消息  ICQ 状态  顶部
 
lonelyfeel
新手上路
Rank: 1



UID 83370
精华 0
积分 1
帖子 1
金钱 1 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2006-11-17
状态 离线
[推荐阅读] 翻译:File uploads made easy
试用一下...
2007-9-18 05:49 PM#9
查看资料  发短消息  顶部
 
Qingqiang
新手上路
Rank: 1



UID 98709
精华 0
积分 7
帖子 5
金钱 7 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2007-9-18
状态 离线
[推荐阅读] 请村长将敏感词汇发出来我看下
恩,mb_strlen()是好用。。。。。。。。。。。。
2007-9-18 06:18 PM#10
查看资料  发短消息  QQ  顶部
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 




Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.024597 second(s), 6 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP