内容搜索是在广告列表显示内容的基础上做关键字的匹配,然后重新生成数组。因为与广告列表共用一个页面,所以页面代码和标签都是完全相同的,这里不再重复了,请读者参考前面的页面代码。下面具体地介绍内容搜索的代码实现。
(1)页面搜索的表单代码:
广州网站设计
- <form action="" method="get" name="form1" id="form1">
- <tr>
- <td align="right"><input name="kw" type="text" id="kw"
- value="{|$kw|}"> <select name="type" id="type">
- <option value="nr">广告内容</option>
- <option value="name">广告ID</option>
- <option value="all">广告备注</option>
- <option value="gge">广告规格</option>
- </select> <input type="submit" value="搜索"> <a href="add.php"
- target="_self">添加新的广告</a></td>
- </tr>
- </form>
【代码解读】
上面的代码定义了一个标准的表单,提供给用户4种类型的选项。其中,input标签的值就是用户输入的查询关键字,代码如下:
广州网站设计
- <input name="kw" type="text" id="kw" value="{|$kw|}">
(2)接收到了表单传过来的查询关键字,PHP脚本匹配关键字,生成结果集数组,然后转化成对应的模板标签并输出查询结果。下面来看PHP是如何处理关键字获得查询结果的。先加载配置文件并获得查询类型,代码如下:
广州网站建设
- include_once(dirname(__FILE__)."/inc/include.smarty.php");
- //加载Smarty配置文件
- include(dirname(__FILE__). "/inc/include.function.php"); //加载函数库文件
- require(dirname(__FILE__)."/config/config.php"); //加载容配置文件
- $type=$_REQUEST[type]; //获得操作类型
- $kw=$_REQUEST[kw];
- $page=$_REQUEST[page];
【代码解读】
上面的代码将获得的关键字赋值给$kw变量,这里需要具体解释配置文件config.php的作用,请看config.php文件的内容:
广州网站建设
- /*******************************************
- '文件名:config.php
- '主要功能:配置文件
- '说明:
- '*******************************************/
- //定义管理员信息
- $adminname="admin"; //管理员账号
- $adminword="admin"; //管理员密码
- //管理员URL安全码
- //如设置后,管理地址将是 http://你的网址/本程序目录/log.php?safecode
- $safecode="safecode";
- //设置配置文件信息
- //广告代码存放的目录
- $addata="js";
- $dbtable="config/data.txt";//设置文件存放位置
- $pagesize="10"; //每页显示的广告条数
【代码解读】
以上代码定义了管理员信息的变量和广告代码存放的目录。可以看到,广告代码文件是data.txt文件,也就是说,查询关键字是与这个文档中的内容做匹配得到的查询结果。读者要注意,这里的逻辑关系就是结果集的来源。
(3)在直观地了解了结果集来源后,来看程序是如何读取和匹配结果的。通过file_get_contents()函数获得广告文件中的内容,再通过explode()函数切割成字符串数组,代码如下:
- $msgd=explode("|www_allen|",file_get_contents($dbtable));
(4)匹配规则和处理数组代码如下:
- if($kw){
- for ($i=0;$i<=$rows;$i++){
- $tmp2=explode("|allen|",$msgd[$i]); //切割字符
- if($type=="name"){ //类型赋值
- $msgn[$i]=$tmp2[0]; //消息内容
- }elseif($type=="nr"){
- $msgn[$i]=$tmp2[2];
- }
- elseif($type=="gge"){
- $msgn[$i]=$tmp2[4];
- }
- else{$msgn[$i]=$tmp2[3];
- }
- if(eregi($kw,$msgn[$i])){ //字符串比对解析(与大小写无关)
- $chj_nr[]=$msgd[$i];
- $chj_numib++;
- }
- }
- if($chj_numib<1){
- echo "没有相关 $kw 的匹配结果!!";
- exit;
- }
- //处理分页和计算总页数代码省略
- ...
- $chj_adlen=$chj_numib-1;
- for($i=$pp;$i< $pp2;$i++){
- if($i < $chj_numib){
- $tmp=explode("|allen|",$msg[$i]);
- if(!empty($kw)){
- $arr[$i]['title']=$tmp[0];
- $arr[$i]['type']=$tmp[1];
- $arr[$i]['size']=$tmp[4];
- $arr[$i]['desc']=$tmp[3];
- }else{
- //当为空时为前一个节点数组赋值
- $arr[$i-1]['title']=$tmp[0];
- $arr[$i-1]['type']=$tmp[1];
- $arr[$i-1]['size']=$tmp[4];
- $arr[$i-1]['desc']=$tmp[3];
- }
- }
- }
【代码解读】
得到的$arr数组就是跟关键字匹配得到的结果数组了。现在输入"互换链接"关键字测试程序匹配的结果,得到结果如图15.8所示。
![]() |
| (点击查看大图)图15.8 搜索结果 |




