PHP分割字符串三种方法

header("Content-type: text/html; charset=utf-8"); 

//第一种方法
function arr_split_zh($tempaddtext){  
    $tempaddtext = iconv("UTF-8", "gb2312", $tempaddtext);  
    $cind = 0;  
    $arr_cont=array();  
    for($i=0;$i<strlen($tempaddtext);$i++)  
    {  
        if(strlen(substr($tempaddtext,$cind,1)) > 0){  
            if(ord(substr($tempaddtext,$cind,1)) < 0xA1 ){ //如果为英文则取1个字节  
                array_push($arr_cont,substr($tempaddtext,$cind,1));  
                $cind++;  
            }else{  
                array_push($arr_cont,substr($tempaddtext,$cind,2));  
                $cind+=2;  
            }  
        }  
    }  
    foreach ($arr_cont as &$row)  
    {  
        $row=iconv("gb2312","UTF-8",$row);  
    }  
    return $arr_cont;  
}  

//第二种正则
function test ( $str ) {
    $temp = '';
    for ( $i = 0; $i < strlen($str); $i++ ) {
        if ( preg_match("/[\w\~\!\@\#\$\%\^\&\*\(\)\_\+\|\{\}\"\:\<\>\?\/\.\,\'\;\[\]\\\=\-\s]/", $str[$i]) ) {
            $temp .= $str[$i] . "%";
        } else {
            $temp .= $str[$i] . $str[++$i] . $str[++$i] . "%";
        }
    }
    return $temp;
}

//第三种递归
function t ( $str ) {
    $temp = '';
    $num = strlen($str);
    for ( $i = 0; $i < $num; $i++ ) {
        if (mb_detect_encoding($str[$i]) === false) {
            $temp .= $str[$i];
        } else {
            $temp .= '%' . $str[$i];
        }
    }
    return $temp;
} 

//运行时间测试
function timeTest ( $num, $f ) {
    $time = microtime(1);
    for ( $i = 0; $i < $num; $i++ )
        $f();
    return microtime(1) - $time;
}



$string="SFEU-P-150303-3 法瑞意+新天鹅堡3-4* MU 罗马法兰 10晚12天";
echo timeTest( 10000, function () {global $string; arr_split_zh($string);} );
echo "<br>";
echo print_r(arr_split_zh($string));
echo "<br>";
echo timeTest( 10000, function () {global $string; t($string);} );
echo "<br>";
echo t($string);
echo "<br>";
echo timeTest( 10000, function () {global $string; test($string);} );
echo "<br>";
echo test($string);