Hvordan lage et domene søkemotor med PHP
PHP er et kraftig skriptspråk som er oftest brukt av webutviklere å lage dynamiske websider og webapplikasjoner. Utvalget av funksjonalitet som PHP gir en programmerer er nesten uendelige, å kunne skape data å sende til en bruker, samt manipulere filer og database oppføringer på baksiden slutten. På grunn av dette, er PHP et utmerket valg av språk hvis du trenger for å bygge en søkemotor for ditt nettsted.
Bruksanvisning
1 Lag søkemotorens webskjema. I dette eksempelet, vil filen av PHP-script bli kalt "search.php." Skjemaet må en skriving boks og en "Send" -knappen.
<Form action = search.php method = get>
<Input name = tasten> <input type = levere verdi = Søk>
</ Form>
2 Lag en funksjon for å søke serverens filer og kataloger. Å gjøre en funksjon vil tillate enkle søk i underkataloger. Funksjonen vil ha en nødvendig parameter, som vil være i søkestrengen.
<?
funksjon søk ($ søkeord) {
}
?>
3 Legg til en valgfri parameter for underkatalog baner. Hvis denne andre parameteren ikke er spesifisert, vil funksjonen som standard søker gjeldende katalog.
funksjon søk ($ søkeord) {
if(func_num_args()>1) $dir = func_get_arg(1);
"." Andre $ dir =;
}
4 Les innholdet i katalogen til en matrise. Legg denne koden til søke () -funksjonen.
$ DirStream = opendir ($ dir);
while ($ nextFile = readdir ($ dirStream)) $ dirArray [] = $ nextfile;
closedir ($ dirStream);
5 Gjenta for innholdet i katalogen array ved hjelp av en foreach loop.
foreach ($ dirArray som $ thisFile) {
}
6 Lag en variabel til å lagre den relative banen fra PHP script til filen som søkte. Legg til dette innenfor foreach loop.
$ ThisPath = $ dir "/" $ thisFile..;
7 Legg til en linje for å hindre søkemotoren fra viser resultater fra skjulte filer (for eksempel ".htaccess").
if (substr ($ thisFile, 0,1) == ".") fortsetter;
8 Sjekk for å se om den nåværende filnavn i $ dirArray er faktisk en underkatalog, i så fall det vil bli lagret i en matrise for å søke gjennom senere.
if (filetype ($ thisPath) == "dir") {
$ Subdir [] = $ thisFile;
fortsette;
}
9 Sjekk innholdet i gjeldende fil for å se om den inneholder søkestrengen lagret i $ søkeord, og i så fall vise en lenke til filen. Din foreach løkke skal nå se slik ut:
foreach ($ dirArray som $ thisFile) {
$ ThisPath = $ dir "/" $ thisFile..;
if (substr ($ thisFile, 0,1) == ".") fortsetter; // Ikke søke skjulte filer, som begynner med "."
if (filetype ($ thisPath) == "dir") {
$ Subdir [] = $ thisPath; // Legger til en rekke notering underkataloger
fortsette;
}
if (strpos (file_get_contents ($ thisPath), $ søkeord)! == false)
echo "<a href=\"".str_replace("./","",$thisPath)."\">" $ thisFile "</a> \ n"..;
}
10 Legg til en linje på slutten av søket () -funksjonen til å iterere gjennom $ subdir matrise og søke i alle underkataloger. Hvis du ikke ønsker å søke underkataloger, ikke legg til denne linjen.
foreach ($ subdir som $ thisDir) søk ($ søkeord, $ thisDir);
11 Legg en siste linjen i PHP etter fullstendig søk () -funksjonen for å se om skjemadata foreligger, og i så fall, ring søke () -funksjonen. Din komplette koden skal se slik ut:
<Form action = search.php method = get>
<Input name = tasten> <input type = levere verdi = Søk>
</ Form>
<?
funksjon søk ($ søkeord) {
IF (func_num_args ()> 1) $ dir = func_get_arg (1);
"." Andre $ dir =;
$ DirStream = opendir ($ dir);
while ($ nextFile = readdir ($ dirStream)) $ dirArray [] = $ nextFile;
closedir ($ dirStream);
foreach ($ dirArray som $ thisFile) {
$ ThisPath = $ dir "/" $ thisFile..;
if (substr ($ thisFile, 0,1) == ".") fortsetter;
if (filetype ($ thisPath) == "dir") {
$ Subdir [] = $ thisPath;
fortsette;
}
if (strpos (file_get_contents ($ thisPath), $ søkeord)! == false)
echo "<a href=\"".str_replace("./","",$thisPath)."\">" $ thisFile "</a> \ n"..;
}
foreach ($ subdir som $ thisDir) søk ($ søkeord, $ thisDir);
}
if (isset ($ _ GET [ 'key']) && $ _GET = [ 'key'] ""!) søk ($ _ GET [ 'nøkkel']);
?>
Hint
- Du kan enkelt legge til flere funksjoner til søkemotoren, slik som betingede søk og rangert resultatene, ved å gjøre mindre endringer i søke () -funksjonen eller kalle det flere ganger.
- Eksempelet er litt mer enn en naken PHP script. Sørg for å legge alle nødvendige HTML-koder (for eksempel "<DOCTYPE>" og "<body>") for å gjøre dine script standard kompatibel.