吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5065|回复: 18
收起左侧

[其他原创] [PHP源码]文章原创度检测源码

[复制链接]
无名小银 发表于 2020-8-16 14:23
本帖最后由 无名小银 于 2020-8-16 14:24 编辑

前言
本人去年写了一个PHP伪原创的工具,但是有时候还需要查看一下伪原创后的文章原创度,换句话说在搜索引擎上是否有类似的文章。

本次原创度检测源代使用百度搜索为准。

首先拼凑百度搜索的url,并且百度限制了搜索词在38个汉字以内,其他的会被丢弃。

https://www.baidu.com/s?ie=utf8&wd=关键词

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

注:[url=https://www.php.net/manual/zh/function.mb-str-split.php]https://www.php.net/manual/zh/function.mb-str-split.php[/url]

以下为文章中其中一个38个汉字的原创度获取源代码,我就不一一解释了,我感觉我这里代码写的不太好,如果您有优化好的,请回复,谢谢。
[PHP] 纯文本查看 复制代码
function bdycl($content){

$info=curl('https://www.baidu.com/s?ie=utf8&wd='.urlencode($content));
preg_match_all("/<div class=\"c-abstract\">(.*?)<\/div>(.*?)href=\"(.*?)\"/is", $info,$baidu);

$count1=count($baidu['1']);

for($i=0;$i<$count1;$i++){
        preg_match_all("/<em>(.*?)<\/em>/is", $baidu['1'][$i],$baidu_em);
        $count=count($baidu_em[1]);
                if($count>1){
                $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;$i<$count;$i++){
                similar_text($content,$bdem[$i]['content'],$per);
                $ii=ceil($per);
                $similar[]=$ii;
                if($ii>90){
                        $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];

}
}

1597558630(1).png

单独一组38个汉字咱们已经写完了,现在需要来一个查询多组的。以下为源代码

[PHP] 纯文本查看 复制代码
function ycl($content){
        $info=mbStrSplit($content);
        $count=count($info)-1;
        if($count<11){
                $rand=$count+1;
        }else{
                $rand='10';
        }
        $tmp = range(0,$count);
        $array_rand=array_rand($tmp,$rand);

        foreach($array_rand as $v){
                $ycl[]=bdycl($info[$v]);

        }
        $count=count($ycl);
        for($i=0;$i<$count;$i++){
                $similar[$i]=$ycl[$i]['similar'];
        }
        $ycd=ceil(((array_sum($similar)/count($ycl))));

        if($ycd <=30){
                $str = "原创度非常低,不建议发布。";
        }else if($ycd <=60 && $ycd > 30){
                $str = "原创度比较低,建议修改后再发布。";
        }else if($ycd <=75 && $ycd > 60){
                $str = "原创度还可以,建议修改后再发布。";
        }else if($ycd <= 85 && $ycd > 75){
                $str = "原创度较好,属于原创文章,可以发布。";
        }else if($ycd > 85){
                $str = "原创度非常棒,属于原创文章,可以发布。";
        }
        return ['ycl'=>$ycd,'info'=>$str]; 
        
}

然后随便从网上找一篇文章,进行检测的结果为:
1597558483(1).png

好了,到此结束,谢谢大家的观看。


免费评分

参与人数 5吾爱币 +11 热心值 +5 收起 理由
jhk19880209 + 1 + 1 我很赞同!
念夕空 + 1 + 1 大佬大佬
huguo002 + 1 + 1 我很赞同!
苏紫方璇 + 7 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
小小学生 + 1 + 1 我很赞同!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 无名小银 发表于 2020-8-17 16:34
huguo002 发表于 2020-8-17 11:11
有个新闻接口查询的,可以加上!

老哥最近在搞什么了?

什么意思,不太懂
简单i 发表于 2020-12-25 01:47
无名小银 发表于 2020-8-17 16:37
可以啊,给我钱就行。

老哥发我一份咯 有偿 企鹅553399608 有偿有偿
额微粒波地 发表于 2020-8-16 15:11
paike100 发表于 2020-8-16 15:43
能分享一下完整源码吗?
 楼主| 无名小银 发表于 2020-8-16 16:39
paike100 发表于 2020-8-16 15:43
能分享一下完整源码吗?

上面的就是啊
paike100 发表于 2020-8-16 18:37

关键不知道咋用
未闻听心 发表于 2020-8-17 08:12
感谢发布原创作品,吾爱破解论坛因你更精彩!
huguo002 发表于 2020-8-17 11:11
有个新闻接口查询的,可以加上!

老哥最近在搞什么了?
xiaomim123 发表于 2020-8-17 15:10
啥时候把那个聚合程序给我一份啊
 楼主| 无名小银 发表于 2020-8-17 16:37
xiaomim123 发表于 2020-8-17 15:10
啥时候把那个聚合程序给我一份啊

可以啊,给我钱就行。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 04:33

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表