ADODB.Recordset 错误 '800a0bcd'

ADODB.Recordset 错误 '800a0bcd',第1张

在网站的根目录下建个search.htm,内容如下

<html>

<head>

<title>搜索表单</title>

<meta http-equiv="Content-Type" content="text/htmlcharset=gb2312">

</head>

<body bgcolor="#FFFFFF" text="#000000">

<form name="form1" method="post" action="search.php">

<table width="100%" cellspacing="0" cellpadding="0">

<tr>

<td width="36%">

<div align="center">

<input type="text" name="keyword">

</div>

</td>

<td width="64%">

<input type="submit" name="Submit" value="搜索">

</td>

</tr>

</table>

</form>

</body>

</html>

二,搜索程序

再在根目录下建个search.php 的文件,用来处理search.htm表单传过来的数据.内容如下

<?php

//获取搜索关键字

?$keyword=trim(?$_POST[“keyword”])

//检查是否为空

if(?$keyword==””){

echo”您要搜索的关键字不能为空”

exit//结束程序

}

?>

这样如果访问者输入的关键字为空时,可以做出提示。下面是遍历所有文件。

我们可以用递归的方法遍历所有的文件,可以用函数opendir,readdir,也可以用PHP Directory的类。我们现在用前者.

<?php

//遍历所有文件的函数

function listFiles(?$dir){

?$handle=opendir(?$dir)

while(false!==(?$file=readdir(?$handle))){

if(?$file!="."&&?$file!=".."){

//如果是目录就继续搜索

if(is_dir("?$dir/?$file")){

listFiles("?$dir/?$file")

}

else{

//在这里进行处理

}

}

}

}

?>

在红字的地方我们可以对搜索到的文件进行读取,处理.下面就是读取文件内容,并检查内容中是否含有关键字?$keyword,如果含有就把文件地址赋给一个数组。

<?php

//?$dir是搜索的目录,?$keyword是搜索的关键字 ,?$array是存放的数组

function listFiles(?$dir,?$keyword,&?$array){

?$handle=opendir(?$dir)

while(false!==(?$file=readdir(?$handle))){

if(?$file!="."&&?$file!=".."){

if(is_dir("?$dir/?$file")){

listFiles("?$dir/?$file",?$keyword,?$array)

}

else{

//读取文件内容

?$data=fread(fopen("?$dir/?$file","r"),filesize("?$dir/?$file"))

//不搜索自身

if(?$file!=”search.php”){

//是否匹配

if(eregi("?$keyword",?$data)){

?$array[]="?$dir/?$file"

}

}

}

}

}

}

//定义数组?$array

?$array=array()

//执行函数

listFiles(".","php",?$array)

//打印搜索结果

foreach(?$array as ?$value){

echo "?$value"."<br>"

}

?>

现在把这个结果和开头的一段程序结合起来,输入一个关键字,然后就会发现你的网站中的相关结果都被搜索出来了。我们现在在把它完善一下。

1,列出内容的标题

if(eregi("?$keyword",?$data)){

?$array[]="?$dir/?$file"

}

改成

if(eregi("?$keyword",?$data)){

if(eregi("<title>(.+)</title>",?$data,?$m)){

?$title=?$m["1"]

}

else{

?$title="没有标题"

}

?$array[]="?$dir/?$file ?$title"

}

原理就是,如果在文件内容中找到<title>xxx</title>,那么就把xxx取出来作为标题,如果找不到那么就把标题命名未”没有标题”.

2,只搜索网页的内容的主题部分。

做网页时一定会有很多html代码在里面,而这些都不是我们想要搜索的,所以要去除它们。我现在用正则表达式和strip_tags的配合,并不能把所有的都去掉。

?$data=fread(fopen("?$dir/?$file","r"),filesize("?$dir/?$file"))

//不搜索自身

if(?$file!=”search.php”){

//是否匹配

if(eregi("?$keyword",?$data)){

改为

?$data=fread(fopen("?$dir/?$file","r"),filesize("?$dir/?$file"))

if(eregi("<body([^>]+)>(.+)</body>",?$data,?$b)){

?$body=strip_tags(?$b["2"])

}

else{

?$body=strip_tags(?$data)

}

if(?$file!="search.php"){

if(eregi("?$keyword",?$body)){

3,标题上加链接

foreach(?$array as ?$value){

echo "?$value"."<br>"

}

改成

foreach(?$array as ?$value){

//拆开

list(?$filedir,?$title)=split(“[ ]”,?$value,”2”)

//输出

echo "<a href=?$filedir>?$value</a>"."<br>"

}

4防止超时

如果文件比较多,那么防止PHP执行时间超时是必要的。可以在文件头加上

set_time_limit(“600”)

以秒为单位,所以上面是设10分钟为限。

所以完整的程序就是

<?php

set_time_limit("600")

//获取搜索关键字

?$keyword=trim(?$_POST["keyword"])

//检查是否为空

if(?$keyword==""){

echo"您要搜索的关键字不能为空"

exit//结束程序

}

function listFiles(?$dir,?$keyword,&?$array){

?$handle=opendir(?$dir)

while(false!==(?$file=readdir(?$handle))){

if(?$file!="."&&?$file!=".."){

if(is_dir("?$dir/?$file")){

listFiles("?$dir/?$file",?$keyword,?$array)

}

else{

?$data=fread(fopen("?$dir/?$file","r"),filesize("?$dir/?$file"))

if(eregi("<body([^>]+)>(.+)</body>",?$data,?$b)){

?$body=strip_tags(?$b["2"])

}

else{

?$body=strip_tags(?$data)

}

if(?$file!="search.php"){

if(eregi("?$keyword",?$body)){

if(eregi("<title>(.+)</title>",?$data,?$m)){

?$title=?$m["1"]

}

else{

?$title="没有标题"

}

?$array[]="?$dir/?$file ?$title"

}

}

}

}

}

}

?$array=array()

listFiles(".","?$keyword",?$array)

foreach(?$array as ?$value){

//拆开

list(?$filedir,?$title)=split("[ ]",?$value,"2")

//输出

echo "<a href=?$filedir target=_blank>?$title </a>"."<br>"

}

?>

到此为止,你已经做好了自己的一个搜索引擎,你也可以通过修改内容处理部分来改进它,可以实现搜索标题,或者搜索内容的功能。也可以考虑分页。这些都留给你自己吧。

这里说明一下用preg_match代替eregi,会快很多。这里只是为了通俗易懂,所以使用了常用的eregi.

牙齿掉了纯粹象征着牙齿本身有毛病。

大家也无须把问题想的太过紧张。

很有可能平时你的牙口就不太好,比如虫牙或牙齿有蹭等,甚至可能是你哪天漏掉了刷牙这个环节,给自己的心理留下暗示,首先看你牙根在不在,牙根掉了你就可以选择种植牙。

种植牙和镶牙利于弊,镶牙就会把你那颗掉的门牙旁边两颗牙磨小。

.就是说好牙给你磨了,他一下做三颗牙。这个时间快,也美观.大约一周。镶牙材料我推荐全铸瓷.你去看牙医时就明白了。

种植牙,就是首先在你牙床上种一个根,就相当于你的压根了,在在那个跟上镶,他会种那个根就得等半年左右吧。

看看有什么反映没有.就是说种植牙很费时,好处就是不会动你旁边的好牙。


欢迎分享,转载请注明来源:优选云

原文地址:https://54852.com/hy/747341.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-06-04
下一篇2023-06-04

随机推荐

  • 几款万人好评的亮肤淡斑精华|原来这么好用,让你的肌肤紧致嫩白

    在现代都市中,我们的肌肤经历的压力是非常大的,灰尘、紫外线、工作压力等等都可能影响我们的肌肤健康。脸上的雀斑、斑点、暗黄等问题都是我们经常遇到的。然而,我们不需要太担心,因为市面上有很多优秀的亮肤淡斑精华产品,它们能够有效改善我们的肤色,给

    2023-12-14
    106400
  • 馥蕾诗唇膏为什么那么贵

    基于原材料、运输成本上涨等综合因素。馥蕾诗一直致力于甄选全球优质的天然成分,为广大消费者带来愉悦体验的美肤方案。馥蕾诗是法国LVMH集团旗下的高端护肤品牌,2007年馥蕾诗获得英国kifus化妆品有限公司技术配方支持。以上就是关于馥蕾诗唇膏

    2023-12-14
    31300
  • 珀莱雅极境海御精华的功效和说明

    珀莱雅极境海御丰盈丝滑精华质地,快速被肌肤吸收,源源润养同时改善粗糙暗沉,淡化细纹干纹,肌肤由内绽现年轻光感。倾注多重美白淡斑成分,集中有效淡化色斑,肌肤晶透无瑕,匀净白皙,无惧亲密接触。20多岁的适合 而且要用保湿补水的产品珀莱雅的晶蓝不

    2023-12-14
    31000
  • 平价口碑最好的隔离霜推荐,总有一款适合你

    隔离霜是常用的彩妆产品,经常作为打底使用,它有助于让妆感更好。下面推荐5款平价隔离霜,本人都亲身测试过,价格实惠,学生党也买得起,总有一款适合你1、自然堂雪润防晒隔离霜参考价格 109元自然堂的这款隔离霜一共有两款,分别是紫色款和绿色款,两

    2023-12-14
    30600
  • 淘宝化妆品店名

    在网络购物时代中,淘宝是其中发展最大的一个电商平台,里面的商店种类多不胜数,其中化妆品就是销量最大的产品种类之一,除了大品牌的化妆品品牌入驻以外,还有许多个体商户在淘宝电商平台开店。在淘宝开化妆品店并不容易,如果宣传没做好,那么就很难做到运

    2023-12-14
    27500
  • 这些热门的美妆、护肤品盘点,人气口碑俱佳,你用过几款喜欢吗

    这些热门的美妆、护肤品盘点,人气口碑俱佳,你用过几款?花钰集氨基酸洗面奶 花钰集氨基酸洗面奶功效:补水 深层清洁 清爽 提亮肤色 改善痘痘肌 这款花钰集氨基酸洗面奶,被广大网友评为国货之光,作为洁面卸妆二合一的洗面

    2023-12-14
    21800
  • 化妆品排行榜前十名

    化妆品排行榜如下:1、法国兰蔻兰蔻是一家法国奢侈香水和化妆品房,在国际上分销产品。兰蔻是欧莱雅公司奢侈品部门的一部分,该企业是其母公司,以更高的价格提供护肤,香水和化妆品。成立于1935年,由纪尧姆d'Ornano和他在法国的业务

    2023-12-14
    17700
  • 韩束和韩后哪个好用过的请讲

    韩束和韩后虽然名字很类似,战略方针也很雷同,但是人家其实是两个品牌,都是国产,并不是来自韩国的品牌哦!韩束韩后这对姐妹名字的品牌究竟哪一个更好一些呢?韩束和韩后哪个好韩后和韩束哪个好?理性选择才是真的好!通过了解韩后和韩束护肤品,那么,韩后

    2023-12-13
    23100
  • 护肤品含哪些成分的不可以在白天用

    护肤品对于我们太重要了,护肤品,既是保护皮肤的护肤产品。随着社会经济的不断进步和物质生活的丰富,护肤品,不再是过去只有富人才用的起的东西。护肤品是由一些化学成分和植物添加组成的,其中一些见到阳光会氧化失去作用。含有下面成分的护肤品白天是少用

    2023-12-13
    22300

发表评论

登录后才能评论
保存