简单PHP搜索引擎源代码
<?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.1\r\n";
$out .= "Host:$url\r\n";
$out .= "Connection:Close\r\n";
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('http://www.163');
$engine->start();
$engine->show();
?>
这只是引擎的主要部分,接下来要做的就是把相关信息存入数据库,然后接着对所有获取的连接再去检索,然后把相关信息再存入数据库,那么核心部分就是我们获取了这些信息之后根据信息内容来设定网站的关键字,然后给他一个排名,供以后搜索。设定网站的排名和关键字只能你自己去想了。
与本文相关的文章
- 如何高效实用搜索引擎
- 推荐开源项目:BitMagnet - 自主托管的BT种子搜索引擎
- 高效使用搜索引擎(以Google为例)
- 简单PHP搜索引擎源代码
- 2023最新最强网盘资源搜索引擎,聚合搜索6大网盘资源
- 四个干净高效的搜索引擎
- 高效利用搜索引擎
- 别忘搜索:可用谷歌、百度等多个搜索引擎同时搜索
- 分享88个搜索链接PHP源码,总有一款适合你
- docker搭建searx_搭建自己的searx搜索引擎
- 浅谈各大搜索引擎蜘蛛
- Redis实战:实现高效的搜索引擎
- 全网搜php,FM全网自动采集聚合影视搜索ThinkPHP源码
- c语言dht网络爬虫,用Node.js实现一个DHT网络爬虫,一步一步完成一个BT搜索引擎(一)...
- 使用搜索引擎可以帮助我们在互联网上快速找到所需的信息和资源
- 搜索引擎爬虫蜘蛛的UserAgent收集
- 如何清除搜索引擎下拉菜单里的历史记录
- 搜索引擎技术资源篇
- 探索高效的全文搜索引擎:tantivy-cli
- Yandex的源代码
评论列表(0)
- 暂无评论