用mbstringmb_strlen($str);要安装php_mbstring.dll扩展。设置php.ini:mbstring.language = Chinese
mbstring.internal_encoding = GB2312

解决方案 »

  1.   

    strlen(str_replace("/([\x80-\xff].)/","**",$regs));
      

  2.   

    strlen(str_replace("/([\x80-\xff].)/","**",$str));
    因为中文占两个字节所以用两个"**"进行替换。
      

  3.   

    <?php
    $str ="<p>如何计abc字符字符总数总数</p>";preg_match_all("/([\x81-\xfe][\x40-\xfe])/", $str, $ch);  $sum = strlen($str) - count($ch[0])*2 + count($ch[0]);echo $sum;?>
      

  4.   

    大家看看这样可以吗?
    <?php
    $total=0;
    $str ="<p>如何计abc字符字符总数总数</p>";
    for($i=0;$i<strlen($str);$i++)
    {
    if  (preg_match("/^[".chr(0xa1)."-".chr(0xff)."]+$/", $str[$i]))
    {
    $total++;
    $i++;
    }
    else
    {
    $total++;
    }
    }
    ?>
      

  5.   

    echo strlen(preg_replace("/[\x80-\xff]./","*",$str));因为楼主要求“一个中文算一个”
    所以 52juanjuan(Fibona)的strlen(str_replace("/([\x80-\xff].)/","**",$str));有误