$str1='I love you, my dear';
$str2='Hanmeimei,Lilei love you';
function max_long_str($str1,$str2) {
$s_str=strlen($str1)<=strlen($str2)?$str1:$str2;//判断长短,用短的字串折半
$l_str=strlen($str1)<=strlen($str2)?$str2:$str1;//折半后和长的字串来比较查找
for($j=strlen($s_str);$j>1;$j=ceil($j/2)) {//二分循环
for($i=0;$i<strlen($s_str)-$j+1;$i++) {//对折半后长度的字串依次比较
$temp=substr($s_str,$i,$j);
if(($pos=strpos($l_str,$temp))!==FALSE) {
if((($pos-$b_pos)==1)||!isset($b_pos)) {
$str[$n]=substr_replace($str[$n],$temp,$k);//合并相邻
$k++;
$b_pos=$pos;
}else{$k=0;$n++;unset($b_pos);}
}else{$k=0;$n++;unset($b_pos);};
}
if(isset($str)) {//有符合则不必再折半
break;
}
}
if(count($str)>=1) {//取长的
foreach($str as $value){
$strr=strlen($value)>=strlen($strr)?$value:$strr;
}
}
return $strr;
}
echo max_long_str($str1,$str2);