如何在网站上制作搜索框?

时间:2012-05-31 11:07:48

标签: php mysql html

我用php语言设计了一个网站。我的网站上有一个搜索框。现在我想让它可用意味着如果用户想要搜索任何东西,他只需在那里输入并获得所需的结果。这是必要的使用PHP或它可以很容易地发生HTML标签???

5 个答案:

答案 0 :(得分:7)

基本搜索

网站上的大多数简单搜索都不会搜索网站的结构,他们使用MySQL中的LIKE语法在相关数据库表的文本字段中查找字词。因此,如果您有博客,则可以让用户以这种方式在博客正文中进行搜索,并返回包含该术语的条目列表。通过一些巧妙的计算,您甚至可以按照该术语出现的次数来命令该列表。

在这些情况下,当用户在搜索框中键入“taco”并按下Enter键时,用户将进入一个PHP页面,该页面在数据库上运行LIKE查询,并向用户显示包含单词Taco的博客帖子它们。

真实搜索

严格来说,上述内容不是网站搜索。如果您的网站包含大量平面HTML页面以及其他以某种方式不在数据库内的页面,则需要对网站进行爬网,并通过搜索该数据来公开数据。 Google can set you up with this.您还可以使用各种第三方工具。但是,学习如何自己构建Web爬虫可能是一个很好的练习。

以下是生成URL数据库的Web爬网程序的基本步骤。这个兔子洞永远延伸,所以这只是你需要做的最小的工作搜索。

数据库

您的数据库将只有一个表。该表需要以下字段:

  • (int)ID
  • (var_char)URL
  • (文字)文字
  • (时间戳)LastChecked

履带

爬虫本身需要连续运行或使用cron调度程序每隔几分钟运行一次。它需要执行这些最基本的操作:

  1. 使用最早的LastChecked时间从数据库加载页面。 (如果数据库中没有页面,则为根页面)
  2. 更新LastChecked时间。
  3. 使用cURL或其他方法从页面获取HTML。
  4. 如果页面的文本内容已更改,请更新此URL的数据库记录。
  5. 在页面上找到所有锚标记<a href="http://www.mysite.com/taco/">Tacos!</a>并创建所有这些网址的数组。
  6. 修剪列表中不在您网站上的所有链接。 (否则,你将在网上爬行)
  7. 如果该URL尚未包含在数据库中,请添加该URL。收集页面文本并同时插入。
  8. 从1开始重复。
  9. 显然,这只会创建所有网页的列表以及它们上面的文字,但这足以让您使用基本搜索中的相同技术创建搜索网站。

    改进

    您可以通过几种简单的方式改进上述抓取工具。

    • 在表格上添加“错误”字段。如果URL具有HTML错误代码且没有数据,请存储代码。您可以从搜索中排除这些内容,它会同时像一个方便的链接检查器一样工作。
    • 您可以添加一个新表来存储您存储的位置:URL ID,计数和URL的已检查状态。正常运行网站上的每个URL并更新此表上的计数。检查主列表中的所有URL后,将“count”移动到主表中的新“rank”字段。转储排名表并重新开始。您将有一个不断更新的页面排名,您可以通过它来订购结果。
    • 您可以通过在每次抓取时存储整页内容的MD5哈希来收集自动“上次更改”数据,每当您重新抓取页面并且此MD5更改时,您存储新文本并添加到新table表示更改时间和URL ID的时间戳。使用此数据,您可以为页面构建预期的更改率。然后,您可以向主表添加“偏移”字段,并将其添加到LastChecked的所有时间戳。这样,您可以重新排序主列表,以便比其他页面更频繁地重新检查某些页面,因为它们会更新更多。

答案 1 :(得分:2)

最简单的是添加Google(或其他搜索引擎)网站搜索。您不需要PHP,但需要一些HTML。

Google Site Search

虽然Google网站搜索是最简单的解决方案,但您也可以使用自己的PHP搜索解决方案或使用第三方脚本,例如此

3rd party search spider script(我自己也没有使用它,也没有附属,它是你可能在互联网上找到的一种脚本的例子而不是推荐)

答案 2 :(得分:0)

您无法使用HTML标记执行此类功能。 PHP不是技术上必要(有替代品),但在你的情况下,可能的答案是:是的,你需要使用PHP。

答案 3 :(得分:0)

最好的是你应该使用谷歌搜索 实施谷歌搜索并不难。您必须提供有关您网站的信息,并且将生成您必须在html页面上放置的脚本

答案 4 :(得分:0)

这是搜索栏的php代码

                                                    家                              html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn, em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,dl,dt,dd,ol,ul,li,fieldset,form,label,input, textarea,fieldset,legend,table,caption,tbody,tfoot,thead,tr,th,td {margin:0;填充:0;边界:0;概要:0; }                                            

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

//check if the keyword is empty 

if($keyword==""){ 

echo"no keywords"; 

exit; 

} 



//With above, you can give hints to your users when they forget to enter a keyword. Now let's go through all the files or articles in your website. 


function listFiles($dir){ 

$handle=opendir($dir); 

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

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

//if it is a directory, then continue 

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

listFiles("$dir/$file"); 

} 

else{ 

//process the searching here with the following PHP script 

} 

} 

} 

} 



//The following scripts read, process files and check whether the files contain $keyword. If $keyword is found in the file, the file address will be saved in an array-type variable. 

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{ 

//read file 

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

//avoid search search.php itself 

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

//contain keyword? 

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

if(eregi("(.+)",$data,$m)){ 

$title=$m["1"]; 

} 

else{ 

$title="no title"; 

} 

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

}

} 

} 

} 

} 

} 

//define array $array 

$array=array(); 

//execute function 

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

//echo/print search results 

foreach($array as $value){ 

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

echo "$value"."
\n"; 

}  
        ?>
hello
</body>
</html>