PHPEye开源社区 » PHP技术讨论区 » 统计中字符串长度
《Programming PHP》第二版上市
2007-11-21 11:17 mayongzhan
统计中字符串长度

[url]http://blog.csdn.net/mayongzhan/archive/2007/11/20/1894503.aspx[/url]

<?php
/**
* @name test.php
* @date Mon Nov 19 21:10:39 CST 2007
* @copyright 马永占(MyZ)
* @author 马永占(MyZ)
* @link [url]http://blog.csdn.net/mayongzhan/[/url]
*/

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 />";
?>

页: [1]
查看完整版本: 统计中字符串长度


Powered by Discuz! Archiver 5.5.0  © 2001-2006 Comsenz Inc.