You are here: Make a search engine for your website with PHP « All PHP « IT news, forums, messages
Make a search engine for your website with PHP

Posted by Rory Canyon on 09/30/60 11:29

Make a search engine for your website with PHP

(Recommended Article)

By Rory Canyon, the founder of ScriptMenu.com (
http://www.scriptmenu.com ). Rory have spent more than 6 years
developing various medium to big web systems/application. For more web
programming related articles or programming resources, visit
http://www.scriptmenu.com



This hands on PHP Programming article provides the knowledge necessary
to design and develop a search engine for your website using PHP
version 4.0 and above. Making a search engine for your website with PHP
is really easy and provides substantial functionality required by most
of the small to medium websites. This article introduces every steps of
the development, including both design and PHP programming. Basic
computer skills and knowledge of HTML fundamentals are required. Ok,
let's begin now.



Step 1: Design Search Box

Under your website root, make a file called search.htm or anything you
like and type in the following code:




<html>



<head>



<title>Web Search</title>



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



</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="Search">



</td>



</tr>



</table>



</form>



</body>



</html>




Step 2: Write search.php file. It is the core of your website search
engine.



Under your website root, create a file called search.php or anything
you like.



<?php



//get keywords



$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.



<?php



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.



<?php



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)){



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



}



}



}



}



}



}



//define array $array



$array=array();



//execute function



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



//echo/print search results



foreach($array as $value){



echo "$value"."<br>\n";



}

?>



Now, combine the programs listed above, you will find all the related
results in your websites will be found and listed. A further
optimization of the search engine can be taken by adding the following,





1,list the title of all searching results



REPLACE THE FOLLOWING



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



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



}



WITH



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



if(eregi("<title>(.+)



</title>",$data,$m)){



$title=$m["1"];



}



else{



$title="no title";



}



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



}





2,Add links to searching results





CHANGE THE FOLLOWING





foreach($array as $value){



echo "$value"."<br>\n";





}



TO



foreach($array as $value){



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



echo "<a href=$filedir>$value</a>"."<br>\n";



}



3 Set time limit for PHP execution



ADD THE FOLLOWING AT THE BEGINNING OF PHP FILES



set_time_limit("600");



The above unit is second,so ten minutes is the litmit.



Now, combine all the above programs and get the complete search.php
file as following,



<?php



set_time_limit("600");



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



if($keyword==""){



echo"Please enter your keyword";



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="no 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>\n";



}

?>




Now, you have made a search engine for your website, enjoy it!



Rory Canyon



http://www.scriptmenu.com

 

Navigation:

[Reply to this message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация