简单PHP搜索引擎源代码

阅读: 评论:0

简单PHP搜索引擎源代码,需要开启PHP的cURL扩展。功能:对某一网址进行检索,获取网站基本信息,同时提取网站的所有连接。
<?php
class Engine{
    private $_url = '';      //URL地址
    private $_sites = '';    //页面信息

    public function __construct($url){
        $this->_url = $url;
    }

    //启动引擎
    public function start(){
        //$content = $this->socketOpen($this->_url);
        $content = $this->getContent($this->_url);
        $this->_sites['url'] = $this->_url;
        $this->_sites['meta'] = $this->getMeta($content);
        $this->_sites['title'] = $this->getTitle($content);
        //$this->_sites['detail'] = $this->getDetail($content);
        $this->_sites['links'] = $this->getLinks($content);
    }

    //获取meta内容
    public function getMeta($content){
        $file = 'metaCache';
        file_put_contents($file,$content);
        $meta = get_meta_tags($file);
        return $meta;
    }

    //获取body内容
    public function getDetail($content){
        preg_match('/<body>(.*?)</body>/i',$content,$matchs);
        $body = $this->stripHTML($matchs[1]);
        return substr($body,0,400);
    }

    //获取title内容
    public function getTitle($content){
        preg_match('/<title>(.+)</title>/i',$content,$matchs);
        return $matchs[1];
    }

    //获取a链接
    public function getLinks($content){
        $pat = '/<a[^>](.*?)href="(.*?)"(.*?)>(.*?)</a>/i';
        preg_match_all($pat,$content,$matchs);
        $result['href'] = $matchs[2];
        $result['name'] = $this->stripTags($matchs[4]);
        return $result;
    }

    //Socket监听
    public function socketOpen($url){
        $fp = fsockopen($url,80,$errno,$errstr,30);
        if($fp === false){
            echo "连接失败:$errstr($errno)<br/>";
            return false;
        }
        else{
            $out = "GET/HTTP/1.1rn";
            $out .= "Host:$urlrn";
            $out .= "Connection:Closern";
            fwrite($fp,$out);
            $content = '';
            while(!feof($fp)){
                $content .= fgets($fp,1024);
            }
            fclose($fp);
            var_dump($content);exit;
            return $content;
        }
    }

    //获取指定url内容
    public function getContent($url){
        $ch = @curl_init($url);
        @curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.0)");
        ob_start();
        $result = @curl_exec($ch);
        $content = ob_get_clean();
        ob_end_clean();
        @curl_close($ch);
        return $content;
    }

    //取出script和style标签
    public function stripHTML($string){
        $pat = array(
            "/<script[^>].*?>.*?</script>/i",
            "/<style[^>].*?>.*?</style>/i"
        );
        $rep = array('','');
        return preg_replace($pat,$rep,$string);
    }

    //去除数组元素的标签
    public function stripTags(&$arr){
        foreach ($arr as $key => $val )
        {
            if(is_array($val)){
                $this->stripTags($arr[$key]);
            }
            else{
                $arr[$key] = strip_tags($val);
            }
        }
        return $arr;
    }

    function show(){
        echo "<pre>";
        print_r($this->_sites);
        echo "</pre>";
    }
    //End Class Engine
}
$engine = new Engine('www.163');
$engine->start();
$engine->show();
?>
这只是引擎的主要部分,接下来要做的就是把相关信息存入数据库,然后接着对所有获取的连接再去检索,然后把相关信息再存入数据库,那么核心部分就是我们获取了这些信息之后根据信息内容来设定网站的关键字,然后给他一个排名,供以后搜索。设定网站的排名和关键字只能你自己去想了。

本文发布于:2025-02-24 09:36:00,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/1740361008580140.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:源代码   简单   搜索引擎   PHP
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23