思路是可以的: //步骤一,分句,把原文$text按标点符号分为句子存入数组$arr,只保存长度15个字符以上的句子//本步骤应该没有难度 //步骤二,判断数组$arr中的每个句子在现有数据库中是否匹配foreach ($arr as $str){ if CheckS($str) 标记句子$str;} //函数,在数据库里面匹配指定的句子,返回最大匹配的子串function CheckS($s){ $n=strlen($s);//考虑汉字编码,可能需要使用多字节的函数,这里只是含义描述 for ($i=0;$i<=$n-15;$i++){ $ss=left($s,$n-$i);//前$n-$i(全长、少1个、少2个、15个)个字符 $sql="select count(*) from 数据库 where 论坛内容 like '%$ss%'"; if 数据库中的论文正文存在字符串$ss then return $ss; $ss=right($s,$n-$i);//后$n-$i(全长、少1个、少2个、15个)个字符 $sql="select count(*) from 数据库 where 论坛内容 like '%$ss%'"; if 数据库中的论文正文存在字符串$ss then return $ss; } return "";//返回空串,表示无匹配} 说明,数据库中的论文要进行整理,整理为匹配模板,删除多余的空格、回车、换行,把所有的表达符号替换为空格,这样数据库里面的论文模板就是空格分开的句子。