好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

php字符串与中文字符拆分方法 - php函数

php字符串与中文字符拆分方法

直接用php函数[str_split]来分割,会出现乱码,因为中文字符长度和英文字符长度是不一样的,但是我们可以建立新的函数先把字符转成ascii值,接着通过判断不同字符的长度来正确分割中文字符串,把结果存入数组,最后再用php函数[join]在字符间插入百分号.

方法一,实例代码如下:

<?php  function  str_split_utf8( $str ){    $split =1;    $array = array ();    for ( $i =0; $i < strlen ( $str )){     $value =ord( $str [ $i ]);     if ( $value >127){      if ( $value >=192&& $value <=223)  $split =2;      elseif ( $value >=224 &&  $value <=239)  $split =3;      elseif ( $value >=240 &&  $value <=247)  $split =4;    } else {      $split =1;    }     $key =null;     for ( $j =0; $j < $split ; $j ++, $i ++){      $key .= $str [ $i ];    }     array_push ( $array , $key );   }    return   $array ;  }  $string = "php粉丝网HdhCmsTestphpfensi测试数据" ;  $arr1 =str_split_utf8( $string );  echo  join( "%" , $arr1 );  ?> 

方法二,实例代码如下:

<?php  $str = "php粉丝网:http://HdhCmsTestphpfensi测试数据" ;  function  mbstringtoarray( $str , $charset ) {       $strlen =mb_strlen( $str );       while ( $strlen ){           $array []=mb_substr( $str ,0,1, $charset );           $str =mb_substr( $str ,1, $strlen , $charset );           $strlen =mb_strlen( $str );      }       return   $array ;  }  $arr =mbstringtoarray( $str , "gb2312" );  ?> 

注意:

1、$charset变量为网页编码,如"gb2312"或"utf-8";

2、使用方法一要求服务器必须开启mbstring.dll扩展,否则代码执行错误,所以对于使用虚拟主机的朋友,可以考虑使用下面的这种方法.

方法三,实例代码如下:

<?php  function  str_to_arr( $str ){    $l = strlen ( $str );    for ( $i =0; $i < $l ; $i ++){     $arr []=ord( $str [ $i ])>127? $str [ $i ]. $str [++ $i ]: $str [ $i ];   }    return   $arr ;  }  $arr =str_to_arr( $str );  ?> 

查看更多关于php字符串与中文字符拆分方法 - php函数的详细内容...

  阅读:48次