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
    36300
  • 好看又香香的护手霜推荐!学生党必入!

    今天给大家推荐几款好看又香香的护手霜。性价比非常高哦,希望可以帮到大家。KT且初烟酰胺护手霜这款是最近入手宝藏,KT烟酰胺净透焕亮护手霜。适合喜欢轻薄吸收快的使用感的姐妹。使用感没得说,质地清透不厚重,一抹化水,快速吸收。保湿力度不错,适合

    2023-12-14
    25800
  • 求罗曼·罗兰《名人传》的创作背景拜托各位了 3Q

    罗曼·罗兰(Romain Rolland,1866-1944),法国思想家,文学家,法国批判现实主义作家,小说家,传记文学家,音乐评论家和社会活动家。1866年1月29日生于法国中部高原上的小市镇克拉姆西。15岁时,随父母迁居巴黎。1899

    2023-12-14
    26500
  • 你觉得哪种精华液最好用,为什么

    本人日常比较热衷护肤,众多精华中推荐以下几款比较好用的。 1雅诗兰黛小棕瓶雅诗兰黛小棕瓶是一款比较万能的单名。上至二十几岁下至五十多岁,都可以无负担使用。小棕瓶主打保湿、维稳、抗初老。有秋冬换季、冬天保湿需求的妹子们,可以

    2023-12-14
    17800
  • 欧美化妆品品牌怎么样

    欧美品牌,除非是针对亚洲人肤质特别研制的,否则一般不是很适合亚洲人使用。 亚洲人肤质和欧美人群的是有很大差异的,所以用它们本土的产品不会有很好的太大的效果。只有它们特别研制亚洲系列才适合我们。 像药妆的薇姿、理肤泉、雅漾、芙丽芳丝等等都有适

    2023-12-14
    26900
  • 有哪些彩妆、烟熏妆、素颜妆系列的化妆品可以推荐

    个人一直都是化淡淡的素颜装,护肤保湿功能做好以后,我会涂兰芝的妆前隔离乳,兰芝气垫,再用兰芝粉饼定妆,就搞定了,简单方便,不耽误时间,眼妆涂上自己喜欢的眼影,化上眼线,涂上睫毛膏,最后涂上口红,就ok了。是不是超简单

    2023-12-14
    15000
  • 日本有哪些知名化妆品牌

    日本女性最爱用的十大化妆品品牌1、资生堂:主力商品是以三十岁女性为对象的“艾丽克希尔”,另外还有“uvwhite”系列商品,拥有广泛顾客群。2、kanebo:化妆用品“提丝蒂摩”最有人气,另外,“布朗希尔”、“菲尔克莱”等美白系列也

    2023-12-14
    16000
  • 玉兰油有致癌成分吗

    有 宝洁:含致癌物化妆品上海无销售 2007年10月18日 香港消委会测试发现,有7款化妆品含有可能引致神经中毒及致癌的化学物———丙烯酰胺单体,其中包括玉兰油(Olay)、巴黎雪完美、H2(下标)O+等知名品牌。昨日,记者致电宝洁(中国)

    2023-12-13
    21900
  • 化妆品活性生物溶媒液体是什么

    科学证实EGF具有如下作用: 1、修复表皮 促进受损表皮的修复与再生,对烧伤、烫伤、光疗、等多种表皮创伤的修复的功效十分显著。在医学上还用在修复肠胃道、肝脏和眼角膜的损伤等。 2、抗皱除皱 EGF能促进表皮细胞组织内多种细胞的生长分裂,使表

    2023-12-13
    15000

发表评论

登录后才能评论
保存