如题用php,在一段文字中随机选取三个字输出。

解决方案 »

  1.   

    $str ="afksdjfkljsdflkjsdaflsdjfksdjlfjsdfeoifjoweirhkdsfsdlfj";
      $numbers = range(1,strlen($str)); 
      shuffle($numbers);
      for($j=1;$j<4;$j++){
               echo substr($str, $numbers[$j],1)."<br>";    
      }
      

  2.   

    是截取汉字时候的乱码问题吧。
    1.用mb_substr()这个函数,
    2.自己写一个在截取函数。
      0xa0好像是汉字开始的标志。是汉字的话就多截一位
      

  3.   

    支持中文
      function strLength($str,$charset='utf-8'){
        if($charset=='utf-8') $str = iconv('utf-8','gb2312',$str);
        $num = strlen($str);
        $cnNum = 0;
        for($i=0;$i<$num;$i++){
        if(ord(substr($str,$i+1,1))>127){
        $cnNum++;
        $i++;
        }
        }
        $enNum = $num-($cnNum*2);
        $number = ($enNum/2)+$cnNum;
        return ceil($number);
        }
      $str ="中货人工国不有要为人发民经同";
      for($t=0;$t<strLength($str,'utf-8');$t++){
          $array[] = mb_substr($str,$t,1,'utf-8');
      }
      $numbers = range(0,strLength($str,'utf-8')-1); 
      shuffle($numbers);
      for($j=0;$j<3;$j++){
          // $str=mb_substr($text,0,$k,'UTF-8');
      echo mb_substr($str,$numbers[$j],1,'UTF-8')."<br>";
      }
      

  4.   

    $s = '运行到汉字就不可以了呀';
    $charset = mb_detect_encoding($s, array('utf-8', 'gbk'));
    $s = mb_convert_encoding($s, 'utf-8', $charset);preg_match_all('/./u', $s, $r);
    $r = $r[0];
    shuffle($r);
    $t = join('', array_slice($r, -3));echo mb_convert_encoding($t, $charset, 'utf-8');