php取中文字符串中出现次数最多的子串的代码

发布时间:2019-09-27编辑:脚本学堂
如何用php获取中文字符串出现次数最多的子串呢?本文为大家提供一段代码,实现这个功能,有需要的朋友,可以参考下。

代码如下:
 

复制代码 代码示例:
<?php
/***
**子串的长度可以自定义,比如连续4个字符
**site http://www.jb200.com
    $str ='我是中国人我是外国人我是韩国人我是美国人我是中国人我是英国人我是中国人我是外国人'; 
    Count_string($str,5); 
    function Count_string($sstr,$length) 
    { 
 $cnt_tmp = 0; 
 $cnt = 0; 
 $str = ''; 
 $str_tmp = array(); 
 $str_arr = array(); 
 mb_internal_encoding("gb2312"); 
 $max_length = (mb_strlen($sstr)-$length); 
  
 //取得子串集 
 for($i=0;$i<=$max_length;$i++) 
 { 
     $str_tmp[] =  mb_substr($sstr, $i, $length); 
 } 
 //去除重复子串  
 $str_tmp = array_unique($str_tmp);
  
 //计算出现次数 
 foreach($str_tmp as $key=>$value) 
 { 
     $cnt_tmp = mb_substr_count($sstr,$value); 
     if($cnt_tmp>=$cnt)  
     { 
  $cnt = $cnt_tmp; 
  $str_arr[$value] = $cnt;      
     } 
 } 
  
 //处理出现多重结果 
 foreach($str_arr as $key=>$value) 
 { 
     if($value == $cnt) 
     {$str .=$key."<br>";} 
 } 
     
 echo '出现最多的子串是:<br>'.$str.'<br>出现次数:'.$cnt; 
}
?>
 

有兴趣的朋友,还可以参考下这篇:php计算未知长度的字符串中出现的次数最多字符的代码