Hakua voi käyttää kahdella eri tavalla:
1. Tavallinen: Skripti etsii hakusanaa käyttäjän syöttämältä sivulta.
http://koti.mbnet.fi/harpakka/m_hakukone.php
2. Paikallinenhaku: Hakusanaa etsitään käyttäjän listaamista tiedostoista.
http://koti.mbnet.fi/harpakka/test/haku/haku.php
Jos paikallinenhaku on päällä eikä haluta että se etsii sanaa myös PHP:n lähdekoodista, tulee tiedoston osoitteeksi antaa koko URL.
<?php //******************************************************* //paikallinen haku $localsearch = 0; //jos paikallinen haku on päällä, listaa tiedostot joista haetaan $files = array(); $files[] = "index.php"; $files[] = "muuta.php"; $files[] = "linkit.php"; $files[] = "palaute.php"; //******************************************************* $caps = $_GET['caps']; $keyword = $_GET['keyword']; $keyword = str_replace(" ", "", $keyword); $target = $_GET['target']; $target = str_replace("http://", "", $target); ?> <form method="get" action="<?php echo $_SERVER['PHP_SELF']; ?>"> Hakusana: <input type="text" name="keyword" size="24" value="<?php if ( $keyword != null ) { echo $keyword; } else { echo ""; } ?>" /> <?php if ( $localsearch == 0 ) { ?> <br />Kohde: <input type="text" name="target" size="35" value="<?php if ( $target != null ) { echo "http://$target"; } else { echo "http://"; } ?>" /> <?php } ?> <br />Sama kirjainkoko: <input type="checkbox" name="caps" value="yes" <?php if ( $caps == "yes" ) { echo "checked=\"checked\""; } ?> /> Kyllä <br /><input type="submit" name="submit" value="Hae" /> </form> <?php if ( $keyword != null ) { function search($target, $keyword, $caps) { $file = file("$target"); for ( $i=0; $i<count($file); $i++ ) { $file[$i] = str_replace("<", " <", $file[$i]); $file[$i] = str_replace(">", "> ", $file[$i]); $file[$i] = str_replace(".", " ", $file[$i]); $file[$i] = str_replace(",", " ", $file[$i]); $file[$i] = str_replace("\"", " ", $file[$i]); $file[$i] = str_replace("/", " ", $file[$i]); $file[$i] = str_replace("(", " ", $file[$i]); $file[$i] = str_replace(")", " ", $file[$i]); $file[$i] = str_replace("[", " ", $file[$i]); $file[$i] = str_replace("]", " ", $file[$i]); $file[$i] = str_replace("!", " ", $file[$i]); $file[$i] = str_replace("?", " ", $file[$i]); $file[$i] = str_replace("-", " ", $file[$i]); $data[$i] = preg_replace("/\r\n|\n\r|\n|\r/", "", $file[$i]); $word = explode(" ", $data[$i]); for ( $j=0; $j<count($word); $j++ ) { if ( $caps == "yes" ) { if ( $keyword == $word[$j] ) { return true; } } else { if ( strtolower($keyword) == strtolower($word[$j]) ) { return true; } } } } return false; } if ( $localsearch == 1 ) { $fresult = 0; for ( $i=0; $i<count($files); $i++ ) { $result = search($files[$i], $keyword, $caps); if ( $result == true ) { $fresult = 1; echo "<p>Hakusana \"$keyword\" löydettiin tiedostosta <a href=\"$files[$i]\" target=\"new\">$files[$i]</a>.</p>\n"; } } if ( $fresult == 0 ) { echo "<p>Hakusana \"$keyword\" ei löytynyt mistään tiedostosta.</p>\n"; } } else { $result = search("http://$target", $keyword, $caps); if ( $result == true ) { echo "<p>Hakusana \"$keyword\" löydettiin osoitteesta <a href=\"http://$target\" target=\"new\">http://$target</a>.</p>\n"; } else { echo "<p>Hakusana \"$keyword\" ei löytynyt osoitteesta <a href=\"http://$target\" target=\"new\">http://$target</a>.</p>\n"; } } } ?>
Aika vähän kommentteja koodin puolella, eikä tuo hae kuin kokonaisia sanoja, mahdollisesti regexp-haku tai osittaisten sanojen haku olisi poikaa.
Olisit saanut kommentoida vähän enemmän tuota koodiasi, kuten tsuriga jo mainitsi, ja suosittelisin, ettet kirjoittaisi noin tiiviisti koodejasi, kuten:
Ei toimi mulla. Heittää kokoajan indexiin, ku koittaa hakee.
Miten sen koko osoitteen saisi näkymään siinä hakukoneen etusivulla? Eli siis että siihen tulisi vaikkapa:
"Hakusana ''hakusana'' löytyi osoitteesta http://codeprofile.bdsm.fi/jotain.html/
Että se hakisi koko sivustosta niin, että siihen tulisi täsmälleen sen osoite ja nimetty kohta.
Ei toimi linkki.
Liian vähän kommentteja tämmöselle PHPtä osaamattomalle.
Miten tuosta saa niin, että nettisivulta haetaan otsikoita ja ne tulostetaan iframen sisälle?
Eli voisiko joku auttaa osaamatonta?
Aihe on jo aika vanha, joten et voi enää vastata siihen.