之前在古镇工作时,我的老板让我开发一个简单版的搜索引擎,哈哈
说实话当时做的也比较差, 多东西都没有想清楚
只是写了一个基础方向,即,管理员登录,然后选择把要爬抓的网站,把它网站上的页面读取,
然后收到数据库,
客户可以通过类似google的方式对提交查询,
有一些地方现在想起来比较差。
例如不检查页面是否存在
今天看了一下手册发现了下面的函数。速度不错。
get_meta_tags
(PHP 3 >= 3.0.4, PHP 4, PHP 5)
get_meta_tags -- 从一个文件中提取所有的 meta 标签 content 属性,返回一个数组
描述
array
get_meta_tags ( string filename [, int use_include_path] )
打开 filename 逐行解析文件中的 <meta> 标签。此参数可以是本地文件也可以是一个 URL。解析工作将在 </head> 处停止。
将 use_include_path 设置为 1 将促使 PHP 尝试按照 include_path 标准包含路径中的每个指向去打开文件。这只用于本地文件,不适用于 URL。
例子 1. get_meta_tags() 解析些什么 <meta name="author" content="name"> <meta name="keywords" content="php documentation"> <meta name="DESCRIPTION" content="a php manual"> <meta name="geo.position" content="49.33;-86.59"> </head> <!-- 解析工作在此处停止 --> |
|
(注意回车换行 - PHP 使用一个本地函数来解析输入,所以 Mac 上的文件将不能在 Unix 上正常工作)。
返回的关联数组以属性 name 的值作为键,属性 content 的值作为值,所以你可以很容易地使用标准数组函数遍历此关联数组或访问某个值。属性 name 中的特殊字符将使用‘_’替换,而其它字符则转换成小写。如果有两个 meta 标签拥有相同的 name,则只返回最后出现的那一个。
例子 2. get_meta_tags() 的返回值 <?php // 假设上边的标签是在 www.example.com 中 $tags = get_meta_tags('http://www.example.com/');
// 注意所有的键(key)均为小写,而键中的‘.’则转换成了‘_’。 print $tags['author']; // name print $tags['keywords']; // php documentation print $tags['description']; // a php manual print $tags['geo_position']; // 49.33;-86.59 ?> |
|
注: 从 PHP 4.0.5 开始,get_meta_tags() 支持没有使用引号括起来的 HTML 属性。