大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
select * from "表纳核名" where content = "%中启首国%"; //%代表任何字悄茄数符
为晋源等地区用户提供了全套网页设计制作服务,及晋源网站建设行业解决方案。主营业务为成都网站建设、成都网站制作、晋源网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
php自带兄镇一个函数similar_text,可以计算两个字符串的相似度,但是这个的准确性、速度不是很好。网上有很多其他的方法和现成的包,你可以搜索看看。下面简单列举一个类
class LCS {
var $str1;
var $str2;
var $c = array();
/*返回串一和串二的最塌尘者长公共子序列*/
function getLCS($str1, $str2, $len1 = 0, $len2 = 0) {
$this-str1 = $str1;
$this-str2 = $str2;
if ($len1 == 0) $len1 = strlen($str1);
if ($len2 == 0) $len2 = strlen($str2);
$this-initC($len1, $len2);
return $this-printLCS($this-c, $len1 - 1, $len2 - 1);
}
/*返回两个串的相似度*/
function getSimilar($str1, $str2) {
$len1 = strlen($str1);
$len2 = strlen($str2);
$len = strlen($this-getLCS($str1, $str2, $len1, $len2));
return $len * 2 / ($len1 + $len2);
}
function initC($len1, $len2) {
for ($i = 0; $i $len1; $i++) $this-c[$i][0] = 0;
for ($j = 0; $j $len2; $j++) $this-c[0][$j] = 0;
for ($i = 1; $i $len1; $i++) {
for ($j = 1; $j 团薯 $len2; $j++) {
if ($this-str1[$i] == $this-str2[$j]) {
$this-c[$i][$j] = $this-c[$i - 1][$j - 1] + 1;
} else if ($this-c[$i - 1][$j] = $this-c[$i][$j - 1]) {
$this-c[$i][$j] = $this-c[$i - 1][$j];
} else {
$this-c[$i][$j] = $this-c[$i][$j - 1];
}
}
}
}
function printLCS($c, $i, $j) {
if ($i == 0 || $j == 0) {
if ($this-str1[$i] == $this-str2[$j]) return $this-str2[$j];
else return "";
}
if ($this-str1[$i] == $this-str2[$j]) {
return $this-printLCS($this-c, $i - 1, $j - 1).$this-str2[$j];
} else if ($this-c[$i - 1][$j] = $this-c[$i][$j - 1]) {
return $this-printLCS($this-c, $i - 1, $j);
} else {
return $this-printLCS($this-c, $i, $j - 1);
}
}
}
纯sql的话,应该实现不了,相似的这个应该还是派樱御PHP来处理的,排第三的都没有相似的内容了,也要尘岩显示。那就是所有的数据,然后再foreach来做对比判断,我觉得可以将字符串分为数颂腊组,然后对比两个数组的交集个数,再按交集的个数来排序
similar_text('氏轮my name is php', 'my name is java', $result);
var_dump($result);
参歼旁信考链接:启档网页链接