加入收藏 | 设为首页 | 会员中心 | 我要投稿 我爱制作网_潮州站长网 (http://www.0768zz.com/)- 物联安全、建站、操作系统、云计算、数据迁移!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php字符串与中文字符拆分技巧

发布时间:2022-06-18 15:42:29 所属栏目:PHP教程 来源:互联网
导读:直接用php函数str_split来分割,会出现乱码,因为中文字符长度和英文字符长度是不一样的,但是我们可以建立新的函数先把字符转成ascii值,接着通过判断不同字符的长度来正确分割中文字符串,把结果存入数组,最后再用php函数join在字符间插入百分号. 方法一,实例代
  直接用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粉丝网www.phpfensi.com";
  $arr1=str_split_utf8($string);
  echo join("%",$arr1);
  ?>
  方法二,实例代码如下:
 
  <?php
  $str="php粉丝网:http://www.phpfensi.com";
  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);
  ?> 

(编辑:我爱制作网_潮州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读