wa中国  现在php的strlen()返回是4??
奇怪我的怎么返回是8啊,php5?
你可以判断每个字的ascii码啊,非256内的就是汉字好了

解决方案 »

  1.   

    echo preg_match_all("/[\x81-\xfe][\x40-\xfe]/","中国北京2008",$a);
      

  2.   

    <?php
    /************************************
    * @Purpose: 按字符截取中文字符串
    * @Method Name: cSubstr()
    * @Parameter: string $strtxt 待截取的字符串
    * @Parameter: int $start 从第几个字符开始截取
    * @Parameter: int $end 至第几个字符结束截取
    * @Return: string $strtxt 截取完的字符串
    ************************************/
    function cSubstr($strtxt, $start = 0, $end = "*")
    {
      $ch = chr(127);
      $p = array("/[\x80-\xfe]([\x19-\xfe])/", "/[\x01-\x79]/");
      $r = array("", "");
      if ($end == "*") $end = strlen($strtxt);
      if ($start < 0) $start += $end;
      if ($start > 0)
      {
    $str = substr($strtxt, 0, $start);
    $len = strlen($str);
    if ($str[$len - 1] > $ch)
    {
      $str = preg_replace($p, $r, $str);
      $len = strlen($str);
    }
    $start += $len;
      }
      $str = substr($strtxt, $start, $end);
      $end = strlen($str);
      if ($str[$end - 1] > $ch)
      {
    $str = preg_replace($p, $r, $str);
    $len = strlen($str);
    $end += $len;
      }
      $strtxt = substr($strtxt, $start, $end);
      return $strtxt;
    } /************************************
    * @Purpose: 按字节截取中文字符串
    * @Method Name: mSubstr()
    * @Parameter: string $strtxt 待截取的字符串
    * @Parameter: int $start 从第几个字符开始截取
    * @Parameter: int $end 至第几个字符结束截取
    * @Return: string $strtxt 截取完的字符串
    ************************************/
    function mSubstr($strtxt, $start = 0, $end = "*")
    {
      preg_match_all("/[\x80-\xff]?./", $strtxt, $array);
      if ($end == "*") $end = strlen($strtxt);
      $strtxt = implode("", array_slice($array[0], $start, $end));
      return $strtxt;
    }
    ?>
    上面两个函数,一个是按字符截取,一个是按字节截取,第一个可以满足你的需要。
      

  3.   

    谢谢各位,问题解决了,开始是我调试出问题了。
    wa中国  php的strlen()返回是8