简单PHP搜索引擎源代码,需要开启PHP的cURL扩展。功能:对某一网址进行检索,获取网站基本信息,同时提取网站的所有连接。

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('/

(.*?)/i',$content,$matchs);

$body = $this->stripHTML($matchs[1]);

return substr($body,0,400);

}

//获取title内容

public function getTitle($content){

preg_match('/

(.+)/i',$content,$matchs);

return $matchs[1];

}

//获取a链接

public function getLinks($content){

$pat = '/](.*?)href="(.*?)"(.*?)>(.*?)/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)
";

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(

"/

"/

);

$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 "

";

print_r($this->_sites);

echo "

";

}

//End Class Engine

}

$engine = new Engine('http://www.163.com');

$engine->start();

$engine->show();

?>

这只是引擎的主要部分,接下来要做的就是把相关信息存入数据库,然后接着对所有获取的连接再去检索,然后把相关信息再存入数据库,那么核心部分就是我们获取了这些信息之后根据信息内容来设定网站的关键字,然后给他一个排名,供以后搜索。

本地信息搜索php程序,PHP搜索引擎相关推荐

  1. 使用Microsoft SQL Server 2000全文搜索功能构建Web搜索应用程序 --作者:Andrew B. Cencini...

    [摘要]了解如何充分利用SQL Server 2000的全文搜索功能.本文包含有关实现最大吞吐量和最佳性能的几点提示和技巧. 概述 使用Microsoft© SQL Server 2000的全文搜索功 ...

  2. python制作查询软件_python 制作本地应用搜索工具

    一.准备工作 请确保已经安装tkinter.pyperclip.threading 二.预览 1.启动 这是程序启动的主界面. 2.运行 搜索之后的界面. 3.结果 选择应用,右击鼠标复制它的下载链接 ...

  3. 正在搜索需要的文件_信息搜索课——前五次课心得

    经倩倩老师推荐,我终于找到这个价格合适.干货满满.口碑不错的信息搜索课程.课程的讲授着朱丹老师是信息搜索界的佼佼者,她曾靠着信息搜索在本科期间找到很多兼职翻译机会,写论文时也用它迅速找到自己需要的资料 ...

  4. 用全文检索构建站内搜索和大数据搜索引擎

    全文检索首先对要搜索的文档进行分词,然后形成索引,通过查询索引来查询文档.全文检索是目前搜索引擎,大数据搜索的关键技术.全文检索系统可实现亚秒级的检索速度以及每秒上百次的并发检索支持. 需求: 实现淘 ...

  5. 同城本地信息发布系统

    为什么要做同城小程序 1.同城/同镇仍有机会 虽然现在有各类信息门户,但目前只覆盖了部分一二线城市,三线以下的城市/小镇仍未完成渗透,且由于覆盖全国多个城市,导致信息和服务不够本地化,对本地人来说价值 ...

  6. everything文件搜索_本地文件搜索神器,Everything、Listary、AnyTXT Searcher!

    今天来分享一下3个本地文件搜索工具. 1.Everything everything应该是最被人们熟知的一个了,毕竟它完全免费,占用内存小.搜索速度快,是一个非常实用的工具. 也许有人会说,Windo ...

  7. gorm preload 搜索_macOS系统本地文件搜索工具

    Find Any File Mac可以准确快速地查找本次磁盘甚至是本地隐藏磁盘上的任何文件,Find Any File Mac不使用数据库,而是使用文件系统驱动程序的快速搜索操作,包括能够搜索到通常隐 ...

  8. matlab超出矩阵索引维度_搜你想看“头条搜索”网页版上线 搜索引擎迎来新玩家...

    作者:七声 审校:一条辉 来源:GPLP犀牛财经(ID:gplpcn) 千呼万唤始出来,8月10日,今日头条旗下"头条搜索"网页版正式上线,slogan为"搜你想看&qu ...

  9. 创建react应用程序_通过构建电影搜索应用程序在1小时内了解React

    创建react应用程序 If you've been meaning to learn React but are unsure of where to start, Scrimba's brand ...

最新文章

  1. Google 发布 Cloud AutoML 降低机器学习门槛,调参民工前景堪忧
  2. 天昊生物16S扩增子绝对定量测序项目文章再次登陆《Science of the Total Environment》...
  3. mysql nosql 同步_使用canal和canal_mysql_nosql_sync同步mysql数据
  4. c++类指针赋值表达式必须是可修改的左值_C++进阶教程系列:全面理解C++中的类...
  5. $_GET,$_post与$_REQUEST
  6. rest_framework03:查询所有/新增数据/删除一个数据/封装Response/序列化与反序列化
  7. Jquery 多行拖拽图片排序 jq优化
  8. 的底层实现 ios_iOS 面试梳理
  9. 《Reids 设计与实现》第十六章 集群(下)
  10. opencv-api drawKeyPoints
  11. 谷歌推出理解神经网络的新方法SVCCA | NIPS论文+代码
  12. Unity3D中的线性插值Lerp()函数解析
  13. Java SE基础教程——Eclipse开发工具的安装与使用
  14. 主流PC常用总线总结
  15. 剖析供应链金融业务发展态势及提升路径
  16. 牛客刷题——part2
  17. win10+django开发项目day03.02
  18. 通过Hyper-V的方式快速安装Linux虚拟机
  19. 数字孪生 智慧工厂可视化决策系统
  20. 小苹果歌词――筷子兄弟

热门文章

  1. Kbengine游戏引擎-【4】demo-kbengine_unity3d_demo 在容器docker上安装测试
  2. 组合查询--表单对象转化为json数组
  3. EXTJS 6 新特性(译文)
  4. centos5.5 下面 lnmp环境遇到的小问题
  5. C#代码生成目录树(转)
  6. 【C/C++】变量的内存分配
  7. 在线网页快捷方式创建工具
  8. html表单input file,最简单的方法美化表单中input type=file元素
  9. swift 点击imageView全屏预览(UIview中弹出提示框)
  10. 浅谈linux线程模型和线程切换