统计中字符串长度

版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出版、作者信息和本声明。否则将追究法律责任。 http://blog.csdn.net/mayongzhan - 马永占,myz,mayongzhan

<?php
/**
* @name test.php
* @date Mon Nov 19 21:10:39 CST 2007
* @copyright 马永占(MyZ)
* @author 马永占(MyZ)
* @link http://blog.csdn.net/mayongzhan/
*/
header("Content-Type: text/html; charset=utf-8");
echo $test = "马永占MyZ";echo "<br />";
mb_internal_encoding("UTF-8");//使用mb_strlen
echo "strlen ".strlen($test)."<br />";
echo "mb_strlen ".mb_strlen($test)."<br />";
echo "mb_strwidth ".mb_strwidth($test)."<br />";
function countStr($str, $handle, $onlyCh=0)
{
//$handle = 1 按照mb_strlen算 一个中文按照1个字算
//$handle = 2 按照mb_strwidth算 一个中文按照2个字算
//$handle = 3 按照strlen算 一个中文按照3个字算
//$onlyCh = 1 只统计中文
$length = strlen($str);
if ($handle == 3 && $onlyCh==0) {
return $length;
}
else {
$i = 0;
if ($onlyCh == 1) {
$k = 0;
}
else {
$k = 1;
}
while($i < $length) {
if(preg_match("/^[" . chr(0xa1) . "-" . chr(0xff) . "]+$/", $str[$i])) {
$i += 3;
$n += $handle;
}
else {
$i += 1;
$n += $k;
}
}
return $n;
}
}
echo "countStr1 " . countStr($test, 1) . "<br />";
echo "countStr2 " . countStr($test, 2) . "<br />";
echo "countStr3 " . countStr($test, 3) . "<br />";
echo "countStr4 " . countStr($test, 1, 1) . "<br />";
echo "countStr5 " . countStr($test, 2, 1) . "<br />";
echo "countStr6" . countStr($test, 3, 1) . "<br />";
?>
v
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值