文章伪原创检测(关键词原创度检测源代使用百度搜索为准的结果为哪般)
优采云 发布时间: 2021-09-14 03:14文章伪原创检测(关键词原创度检测源代使用百度搜索为准的结果为哪般)
前言
我去年写了一个PHP伪原创工具,但有时需要查看伪原创之后的文章原创度,也就是说搜索引擎上是否有类似的文章。
这次原创度测源代以百度搜索为标准。
先拼凑百度搜索的url,百度限制搜索词38个汉字以内,其他的将被丢弃。
关键词
php curl 访问函数源码
[PHP] 纯文本视图复制代码
function curl($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$httpheader[] = "Accept:*/*";
$httpheader[] = "Accept-Encoding:gzip,deflate,sdch";
$httpheader[] = "Accept-Language:zh-CN,zh;q=0.8";
$httpheader[] = "Connection:close";
curl_setopt($ch, CURLOPT_HTTPHEADER, $httpheader);
curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3314.0 Safari/537.36 SE 2.X MetaSr 1.0');
curl_setopt($ch, CURLOPT_ENCODING, "gzip");
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$ret = curl_exec($ch);
curl_close($ch);
return $ret; }
好的,现在百度搜索的url也可以了,那怎么查看文章的原创度?
首先要去掉一个文章的所有html标签,然后需要使用如下代码
[PHP] 纯文本视图复制代码
function ClearHtml($str)
{
$str = trim($str);
$str = strip_tags($str,"");
$str = preg_replace("/\t/","",$str);
$str = preg_replace("/\r\n/","",$str);
$str = preg_replace("/\r/","",$str);
$str = preg_replace("/\n/","",$str);
$str = preg_replace("/ /","",$str);
$str = preg_replace("/ /","",$str);
return trim($str);
}
那么我们必须把重新排列的文章分成一个38个汉字的数组,使用的代码是
[PHP] 纯文本视图复制代码
function mbStrSplit ($string, $len=38) {
$start = 0;
$strlen = mb_strlen($string);
while ($strlen) {
$array[] = mb_substr($string,$start,$len,"utf8");
$string = mb_substr($string, $len, $strlen,"utf8");
$strlen = mb_strlen($string);
}
return $array;
}
如果你的PHP环境是PHP7.4,可以直接用下面的内置函数把文章分成一组38个汉字,但是我用的是上面的,我还没有内置暂时最新的PHP环境。
[PHP] 纯文本视图复制代码
mb_str_split ( string $string [, int $split_length = 1 [, string $encoding = mb_internal_encoding() ]] ) : array
ע:https://www.php.net/manual/zh/function.mb-str-split.php
以下是文章中原创度的38个汉字之一,获取源码。我就不一一解释了。感觉我这里的代码不是很好。如果优化过,请回复,谢谢。
[PHP] 纯文本视图复制代码
function bdycl($content){
$info=curl('https://www.baidu.com/s?ie=utf8&wd='.urlencode($content));
preg_match_all("/(.*?)(.*?)href=\"(.*?)\"/is", $info,$baidu);
$count1=count($baidu['1']);
for($i=0;$i1){
$baiduem='';
foreach($baidu_em[1] as $value){
$baiduem.=$value;
}
$bdem[]=[
'content'=>$baiduem,
'url'=>$baidu['3'][$i]
];
}else{
$bdem[]=[
'content'=>@$baidu_em[1][0],
'url'=>$baidu['3'][$i]
];
}
}
if(is_array($bdem)){
$count=count($bdem);
$in=[];
for($i=0;$i90){
$in[]=[
'similar'=>$ii,
"content"=>$bdem[$i]['content'],
'url'=>$bdem[$i]['url']
];
}
}
array_multisort(array_column($in,'similar'),SORT_DESC,$in);
if(isset($in['0'])){
$in=$in['0'];
}
return ['similar'=>(100-array_sum($similar)/count($bdem)),'content'=>$in];
}
}
我们已经写完了一组 38 个汉字。现在我们需要查询多组一组。以下是源码
[PHP] 纯文本视图复制代码
function ycl($content){
$info=mbStrSplit($content);
$count=count($info)-1;
if($count$str];
}
然后随便从网上找了一篇文章的文章,测试的结果是:
好的,就是这样,谢谢观看。