/**
* 随机生成N个汉字
* @param  string $giveStr  必须含有的字
* @param  int $num 需要生成多少个汉字
* @return string 返回生成的字符串
*/
private function getRndWords( $giveStr="", $num=18 ){
  $str = "听见啦金玉良缘冰清玉洁继往开来锦绣山河冰雪聪明功成名就桃花潭水深千尺不及汪伦送我情先帝创业未半而中道今天下三分益州疲弊此诚危急存亡之秋也然侍卫之臣不懈于内忠志之士忘身于外者盖追先帝之殊遇欲报之于陛下也诚宜开张圣听";//字库
  $newStr = "";//机生成的包含答案的字符串
  $anLo = array();//设定的答案所在的位置。
  $bit = 3;//位数,在本系统中是utf-8编码,一个中文长度为3
  $anLenth = floor(strlen($giveStr)/$bit); //答案长度,在UTF编码中,
  //这些汉字在18个汉字中的位置
  $i = 0;
  while ( $i<$anLenth ) {
   $rd = rand( 0, $num-1 );
   if(in_array($rd,$anLo)) continue; //保证了不重复。
   $anLo[] = $rd;
   $i++;
  }
  for( $j=0; $j<$num;$j++ ){
   if(in_array($j,$anLo)){
    $k = array_search($j,$anLo);
    $newStr .= mb_substr($giveStr,$k*$bit,$bit); #echo $newStr."<br>";
   } else {
    $rd  = rand(0,(strlen($str)-1)/$bit);
    $wd  = mb_substr($str,$rd*$bit,$bit);
    $str = str_replace($wd, '', $str);
    $newStr .= $wd;
   }
  }
  return $newStr;
}