php如何匹配字符串中重复的子字符串

比如有如下的字符串:

$str = "cpucpucpucpucpucpucpucpucpcupcpu";  
$str1="lovelovelovelovelovelovelovelovelovehellohellohellohellohahaha";  

想要得到的结果是:

$str中出现次数最多的子字符串是 cpu。 $str1中出现次数最多的字符串是 love和hello。 

大家帮忙给指导指导。




  
拉风的咖菲猫
浏览 847回答 4
4回答

莫回无

$len = strlen($str); $flag['num'] = 0; $flag['str'] = ''; $flag['len'] = 0; for($i = 0; $i < $len-1; $i++){ for ($j = 2; $j < $len - 1 - $i; $j++) { $tar = substr($str, $i, $j); $count = substr_count($str, $tar); if($count >= $flag['num']){ $flag['num'] = $count; $flag['str'] = $tar; } } } var_dump($flag); $str 中重复最多的显然是 cp

www说

substr_count

函数式编程

个人觉得,如果仅仅是给出一个连续的字符串,也没有明确说明统计什么单词出现的次数,这种情况下: 首先得有一个中英文字词大全 一个个进行组合,比如第一个字符和第二个字符进行组合,在字词大全中查找是否有这么个字或词!如果有,统计他出现的次数,第一个和第三个进行组合...直到第一个和第 n 个 .....,这是两个字符进行组合,接下去是三个字符进行组合 ... 等第。等第一个字符所有可能性组合完成,第二个字符以此类推。 最后对统计得出的结果进行排序,返回出现次数最高的字或词 个人觉得单第一个条件就难以满足....,所以,这种想法不太可能实现! 如果你给出一个有明确分隔符字符串,比如有空格的,那还好。或者说给出一个任意字符串(连续都无所谓),但是你很明确知道要统计其中什么字、词的数量,比较得出频率最高的结果,那都很好实现 ....

湖上湖

有个疑问,出现最多的字符串是已经给定的几个来判别,还是说该字符串中所有子串,然后取查其最多的? 如果是给定的一组字符串(字典),只需要使用substr_count()来统计 如果是所有子串的情况,就需要计算出该字符串的所有子串(非空),如cpucpucpucpucpucpucpucpucpcupcpu 中的c,p与u也属于最多的
打开App,查看更多内容
随时随地看视频慕课网APP