如何取得中文字符串中出现次数最多的子串

yipeiwu_com6年前PHP代码库

直接上代码,子串的长度可自己设置(比如连续4个字符的或5个字符的)。

复制代码 代码如下:

$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;
}

相关文章

phpfpm的作用和用法

PHP-FPM(FastCGI Process Manager:FastCGI进程管理器)是一个PHPFastCGI管理器,对于PHP 5.3.3之前的php来说,是一个补丁包 ,旨在将...

PHP页面中文乱码分析

PHP页面中文乱码出现的原因有几种,一种是页面编码不统计一,二是数据库未设置编码,三是apache编码有问题,下面我来给大家介绍两种解决办法,总体来讲就是页面编码不统一了。出现乱码大部分...

php检测数组长度函数sizeof与count用法

本文实例讲述了php检测数组长度函数sizeof与count用法。分享给大家供大家参考。具体如下: 在php检测数组长度的函数有sizeof count 下面看个简单实例: 复制代码 代...

PHP 生成的XML以FLASH获取为乱码终极解决

经过探索最终解决。记录之,顺便也记录了通用解决方案。如果你也遇到XML<->FLASH乱码情况,可以速查: 1.确信XML绝对没有问题的情况: 首先,flash读取xml出现...

Asp.net 文本框全选的实现

一、鼠标滑过textbox全选 前台: <asp:TextBox runat="server" onMouseOver="this.focus();this.select()"&g...