帐号: 密码:
// 设为首页 // 收藏本站 // 请您留言 // 网址导航
远方教程-满足你的求知欲!
站内搜索:
HTML ASP PHP CSS DIV Dreamweaver Photoshop Word Excel PPT SEO技巧
您当前位置:网站首页 >> PHP教程 >> PHP零基础入门 >> 阅读文章

php零基础入门第三章:php实例之站内收索引擎

来源:远方教程 作者:远方教程 发布时间:2014-11-13 查看次数:2987 访问[新版]

  本章导读

  3.5 简单的站内搜索引

  PHP可以调用外部程序。Unix环境下我们可以利用程grep实现一个简单的搜索引擎。我们可以做的稍微复杂一些:使用一个页面既输出一个表单供用户输入搜索字串又输出查询结果

<?
include("include/common.inc");
$title = "Search";
include("include/header.inc");
?>

<P>
<FORM ACTION="<? echo "$PHP_SELF"; ?>" METHOD="POST">
<INPUT TYPE="text" NAME="searchstr" value="<? echo "$searchstr"; ?>" SIZE="20" MAXLENGTH="30">
<INPUT TYPE="submit" VALUE="Search!"> </FORM>
</P>
<?
if ( ! empty($searchstr) )
{
// empty()用来检查查询字串是否为
//
如果不为空,调grep

echo "<HR>&#92;n";

// grep对所有文件进行大小写非敏感模式的查

$cmdstr = "grep -i $searchstr *";

$fp = popen( $cmdstr, "r" ); //执行命令并输出管

$myresult = array(); //存储查询结

while( $buffer = fgetss ($fp, 4096))

{

// grep返回这样格式:文件名:匹配字串出现行

// 因此我们利用函split()分离处理数

list($fname, $fline) = split(":",$buffer, 2);

// 我们只输出第一次匹配的结

if ( !defined($myresult&#91;$fname&#93;))

$myresult&#91;$fname&#93; = $fline;

}

// 现在我们将结果存储在数组中,下面就可以处理并输出

if ( count($myresult) )

{

echo "<OL>&#92;n";

while(list($fname,$fline) = each($myresult))

echo "<LI>

<A HREF=&#92;"$fname&#92;">$fname</A> : $fline </LI>&#92;n";

echo "</OL>&#92;n";

}

else

{

// 如果没有查询结

echo "Sorry. Search on <B>$searchstr</B>

returned no results.<BR>&#92;n";

}

pclose($fp);

}

?>

<?

include("include/footer.inc");

?>

注释

PHP_SELFPHP内建的变量。包含当前文件名

fgets()按行读取文件,最4096(指定)字符长度

fgetss()fgets()相似,只是解析输出HTML标记

split()有一个参数2,因为我们只需要把输出分成两部分。另外需要省略":"

each()是一个数组操作函数,用来更方便的遍历整个数组。

popen()pclose()fopen()fclose()的功能很相似,只是增加了管道处理。

  请注意以上的代码并不是实现一个搜索引擎的好办法。这只是有助于我们更好学PHP而举出的一个例子而已。理想的情况是你应该建立一个包含关键字的数据库然后进行搜索

打印 打印 | 关闭 关闭 评论
相关文章
图片新闻
站内搜索  
搜索
猜您喜欢  
最新更新  
阅读排行  
关于我们 | 联系方式 | 大事记 | 免责声明 | | 给我留言
部分广告源自金山联盟2345联盟 QQ咨询 站长之家QQ群:232617873
Copyright 2024 远方教程 © All Rights Reserved.

回顶部