我有一中文字串
$c = "我有一中文字串";
我想用这样的方法遍历
for($i=0; $i<strlen($c); $i++) {
$c[$i];  ///我想用这样的方法取出中文字符,但是不行, echo $c[$i]; 时,终端可以正常显示,但用作他途时乱码
}

解决方案 »

  1.   

    $c这是中文字符串,每个字符占两个字节
    strlen是按字节计算的
    所以用strlen取出来的当然是乱码
      

  2.   


    //1------------非中文字符
    $a = 'abcdefg';
    $arr = str_split($a,1);
    echo "<xmp>";
    print_r($arr);
    echo "</xmp>";
    //-----------------------//2----------------纯中文(php文件是ANSI编码环境下)
    $a = '我是中国人';
    $arr = str_split($a,2);
    echo "<xmp>";
    print_r($arr);
    echo "</xmp>";
    //-----------------------//3----------------纯中文(utf-8编码环境下)
    $a = '我是中国人哦';
    $arr = str_split($a,3);
    echo "<xmp>";
    print_r($arr);
    echo "</xmp>";
    //-----------------------
      

  3.   

    str_split可以直接把纯中文的字符串切成数组...
      

  4.   

    mb_internal_encoding("UTF-8"); //this IS A MUST!! PHP has trouble with multibyte when no internal encoding is set! $dictLen = mb_strlen($tc); 

    for($i=0; $i<$dictLen; $i++) { $tcChar = mb_substr($tc, $i, 1);
    echo $tcChar;
    }