17. december 2004 - 10:36Der er
81 kommentarer og 1 løsning
Søg i html sider
Halløjsa,
Jeg er ved at være godt træt af at finde en søgefunktion til min side. Jeg forsøgte at sætte noget op i perl, men det vil simpelthen ikke fungere på serveren, selvom hotellet tydeligvis tilbyder perl. Men det har vist noget med usikre og sikre scripts eller sårn... whatever... Det er jeg i hvertfald færdig med.
Nu vil jeg så høre om det er muligt at lave et php script som kan søge i mine html sider. Jeg har ledt meget efter en simpel løsning, som "bare" kigger i mine html filer. Ikke noget med database osv... Men det er umuligt (<- for mig i hvertfald) at finde noget.
Brug af AI afslører de svagheder, virksomheder allerede har opbygget gennem års cloud-transformation, nye SaaS-løsninger og fragmenterede sikkerhedssystemer.
Du kunne jo læse en html fil ind i en variable, se om det du søger er i den variable, hvis ja, lave link til siden og gå videre til næste fil, hvis ikke, gå videre til næste fil.
Så du mener at sciptet har en liste over sider den skal søge i, hvor den så sorterer de sider uden det gældende ord fra?
Det lyder vel ok, men vil der så være mulighed for at vise noget af sidens indhold. Nu snakker vi ikke så avanceret som google, men bare at brugeren lige for lidt mere end sidens titel
Lige nu har jeg dem alle i en mappe, som min template finder filerne fra, så det vil nok være bedst sådan, da det jo også er nemmere hvis/når nye sider skal tilføjes.
Det ville da være lækkert, men ligesom det dejlige script du hjalp mig med i går, så må du godt fodre mig lidt i bider, så jeg også hvis ikke lære noget, så i det mindste får en bedre indsigt... =]
// Open a known directory, and proceed to read its contents if (is_dir($dir)) { if ($dh = opendir($dir)) { while (($file = readdir($dh)) !== false) { echo "filename: $file : filetype: " . filetype($dir . $file) . "\n"; } closedir($dh); } } ?>
Den vil løbe alle filer i et dir igennem.
Efterfølgende skal vi så have tjekket om det er en HTML eller HTM fil, og så åbne den og søge igennem...
// Open a known directory, and proceed to read its contents if (is_dir($dir)) { if ($dh = opendir($dir)) { while (($file = readdir($dh)) !== false) { echo "filename: $file : filetype: " . filetype($dir . $file) . "\n"; } closedir($dh); } else { echo "opendir failed<br>"; } } else { echo "$dir is not a Directory<br>"; } ?>
Tror faktisk du skal have dir med fra start! lave en phpinfo(); og så hvor den fil ligger pt! Lav så stien via det info! Eller giv mig et link, så skal jeg forsøge!
// Open a known directory, and proceed to read its contents if (is_dir($dir)) { if ($dh = opendir($dir)) { while (($file = readdir($dh)) !== false) { if (is_file($dir . $file)) { echo "Vi skal søge i filen: file<br>"; $indhold = file_get_contents($dir . $file); //Her skal vi så søge i filens indhold... Og det kan godt komme til at tage noget tid... } } closedir($dh); } else { echo "opendir failed<br>"; } } else { echo "$dir is not a Directory<br>"; } ?>
echo $dir . $file . "<br>" $indhold = file_get_contents($dir . $file); //Her skal vi så søge i filens indhold... Og det kan godt komme til at tage noget tid...
i toppen af den eksisterende fil?? Undskyld, jeg er ikke helt med nu... sådan her?
<?php
function file_get_contents($file) { return implode(file($file)); }
$dir = "/htmldir/"; //Dit HTML bibliotek
// Open a known directory, and proceed to read its contents if (is_dir($dir)) { if ($dh = opendir($dir)) { while (($file = readdir($dh)) !== false) { if (is_file($dir . $file)) { echo "Vi skal søge i filen: file<br>"; echo $dir . $file . "<br>"; $indhold = file_get_contents($dir . $file); //Her skal vi så søge i filens indhold... Og det kan godt komme til at tage noget tid... } } closedir($dh); } else { echo "opendir failed<br>"; } } else { echo "$dir is not a Directory<br>"; } ?>
function file_get_contents($file) { return implode(file($file)); }
if(isset($_GET['sSearch'])) { $dir = "/htmldir/"; //Dit HTML bibliotek
// Open a known directory, and proceed to read its contents if (is_dir($dir)) { if ($dh = opendir($dir)) { while (($file = readdir($dh)) !== false) { if (is_file($dir . $file)) { $indhold = file_get_contents($dir . $file); if (preg_match('/.{0,10}$_GET['search'].{0,10}/s', $indhold, $match)) { echo "Jeg fandt: <b>" . $_GET['sSearch'] . "</b> i filen: $file"; } else { echo "Jeg fandt ikke: <b>" . $_GET['search'] . "</b><br>"; } //Her skal vi så søge i filens indhold... Og det kan godt komme til at tage noget tid... } } closedir($dh); } else { echo "opendir failed<br>"; } } else { echo "$dir is not a Directory<br>"; } } ?>
function file_get_contents($file) { return implode("",file($file)); }
if(isset($_GET['sSearch'])) { $dir = "/wwwroot/tg/Pages/"; //Dit HTML bibliotek
// Open a known directory, and proceed to read its contents if (is_dir($dir)) { if ($dh = opendir($dir)) { while (($file = readdir($dh)) !== false) { if (is_file($dir . $file)) { $indhold = file_get_contents($dir . $file); $searchString = "/.{0,10}" . $_GET['search'] . ".{0,10}/s"; if (preg_match($searchString, $indhold, $match)) { echo "Jeg fandt: <b>" . $_GET['sSearch'] . "</b> i filen: $file"; } else { echo "Jeg fandt ikke: <b>" . $_GET['search'] . "</b><br>"; } //Her skal vi så søge i filens indhold... Og det kan godt komme til at tage noget tid... } } closedir($dh); } else { echo "opendir failed<br>"; } } else { echo "$dir is not a Directory<br>"; } } ?>
function file_get_contents($file) { return implode("",file($file)); }
if(isset($_GET['sSearch'])) { $dir = "/wwwroot/tg/Pages/"; //Dit HTML bibliotek
// Open a known directory, and proceed to read its contents if (is_dir($dir)) { if ($dh = opendir($dir)) { while (($file = readdir($dh)) !== false) { if (is_file($dir . $file)) { $indhold = file_get_contents($dir . $file); $searchString = "/.{0,10}" . $_GET['search'] . ".{0,10}/si"; if (preg_match($searchString, $indhold, $match)) { echo "Jeg fandt: <b>" . $_GET['sSearch'] . "</b> i filen: $file<br>"; } else { echo "Jeg fandt ikke: <b>" . $_GET['search'] . "</b> i filen: $file<br>"; } //Her skal vi så søge i filens indhold... Og det kan godt komme til at tage noget tid... } } closedir($dh); } else { echo "opendir failed<br>"; } } else { echo "$dir is not a Directory<br>"; } }
okay... Jeg søgte på forside, som jo står i forside html. Og det finder den... og det er kewl. Men hvis man så forsøger en ny søgning, returnerer den ingenting.
Jeg fandt: Søg i filen: home.html Jeg fandt ikke: forside i filen: produkter.html
Ja, men problemet er vi søger i "rå" html kode, så du vil kunne få tags med... Dem kan vi rippe fra... Men stadig væk, det er muligt... Skal jeg kode videre?
ok, kewl... tænkte jeg nok, men skal selvfølgelig sikre mig, så jeg ikke kommer og rapporterer flere fejl til dig.
Ok to ting.
Hvis man taster noget ind og trykker enter, så viser den intet. Men trykker man på søg knappen, så finder den noget frem. Meget besynderligt.
Vi mangler at det skal være et link, hvilket jeg tror er lidt kompliceret. Ser du, jeg bruger en template, som henter disse html elementer (dem vi søger i) ind. Det vil sige at skal man f. eks ind på forsiden hedder linket ?page=../Pages/home efter template.php. Tror du man kan lave linket sådan???
Så mangler der bare et par småting, hvis du stadig gerne vil bruge lidt tid på at hjælpe.
Som sagt, så finder den kun noget hvis man trykker på søg knappen. Hvis man bare skriver noget og trykker enter, så viser den intet.
Et andet problem for mig er at vise søgeresultaterne det rigtige sted. Som sagt bruger jeg en template, hvor alt indhold har sin plads. Men selve søgefeltet sidder i toppen af templaten. Nogle gode idéer til hvordan søgeresultaterne kan vises nede i den rigtige kasse?
Det jeg har gjort er at bruge følgende i templaten...
<div> <?php include ("$page.html"); ?> </div>
dermed kan jeg bare linke til f.eks ?page=../Pages/etellerandet og så bliver det hentet ind på template_a
Jeg tænkte på bare at oprette en template_b , som ikke bruger den include, men har søge scriptet liggende i stedet. Men hvordan jeg lige får formen, som skal ligge på alle sider (altså template_a), til at kommunikere med scritet på template_b ??
Du har måske svaret, eller en bedre (nemmere?) løsning.
if(isset($_GET['sSearch'])) { $dir = "/kunder/damgaard-olsendk/htdocs/exp/"; //Dit HTML bibliotek
// Open a known directory, and proceed to read its contents if (is_dir($dir)) { if ($dh = opendir($dir)) { $found = false; while (($file = readdir($dh)) !== false) { if (is_file($dir . $file)) { $indhold = file_get_contents($dir . $file); $searchString = "/.{0,50}" . $_GET['search'] . ".{0,50}/si"; if (preg_match($searchString, strip_tags($indhold), $match)) { $found = true; $fileName = substr($file, 0, strrpos($file, ".")); echo "<a href=\"?page=../Pages/" . $fileName . "\">" . $fileName . "</a> : " . $match[0] . "<br>"; } } } closedir($dh); if ($found === false) { echo "Vi fandt desværre ikke: <b>" . $_GET['search'] . "</b><br>"; } } else { echo "opendir failed<br>"; } } else { echo "$dir is not a Directory<br>"; } } ?>
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.