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函数的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did30873