php怎样搜索_PHP如何实现简单的站内搜索?

利用PHP实现搜索并不是最好的办法,但本文为了加强PHP的理解,达内PHP培训权威老师用PHP

实现简单的站内搜索。

PHP 可以调用外部程序。在Unix 环境下我们可以利用程序grep 实现一个简单的搜索引擎。

我们可以做的稍微复杂一些:使用一个页面既输出一个表单供用户输入搜索字串又输出查询

结果。

include("include/common.inc");

$title = "Search";

include("include/header.inc");

?>

?>" METHOD="POST">

value=" echo "$searchstr";

?>"

SIZE="20" MAXLENGTH="30">

VALUE="Search!">

if ( ! empty($searchstr) )

{

// empty()用来检查查询字串是否为空

// 如果不为空,调用grep 查询

echo

"


\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[$fname]))

$myresult[$fname] =

$fline;

}

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

if ( count($myresult) )

{

echo

"

  1. \n";

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

echo "

HREF=\"$fname\">$fname

: $fline

\n";

echo

"

\n";

}

else

{

// 如果没有查询结果

echo "Sorry. Search on

$searchstr

returned no

results.
\n";

}

pclose($fp);

}

?>

include("include/footer.inc");

?>

注释:

PHP_SELF 是PHP 内建的变量。包含当前文件名。

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

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

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

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

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

请注意以上的代码并不是实现一个搜索引擎的好办法。这只是有助于我们更好学习PHP 而

举出的一个例子而已。理想的情况是你应该建立一个包含关键字的数据库然后进行搜索。

北京达内是提供PHP培训比较早,有非常完善的课程体系设置,如果您想进行系统学习,

可以到官网(www.yctarena.com)了解下。大家在学习PHP的时候不要急功近利,追求做出

完整的项目,而是通过实现一个一个小功能,真正弄懂PHP的基础理论和应用方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值