Avatar billede l_domino_l Nybegynder
04. juni 2008 - 09:37 Der er 16 kommentarer og
1 løsning

Søge efter text i filer?

Er der ikke nogen der kender et sted hvor jeg kan hente en kode til hvordan man får en PHP Funktion til at søge i alle de HTML filer jeg har til at ligge på mit webhotel?
Avatar billede jakobdo Ekspert
04. juni 2008 - 10:03 #1
Hvis du vil lave lidt selv, så kan du bruge følgende funktioner:

glob() til at løbe filerne igennem i et bibliotek.
file_get_contents() til at læse filernes indhold.
strpos() til at se om en streng (filens indhold) indeholder det tekst du søger efter.
Avatar billede l_domino_l Nybegynder
04. juni 2008 - 10:11 #2
Ok....

Men har ikke en dyt forstand på det..... *GGG*
Avatar billede jakobdo Ekspert
04. juni 2008 - 10:18 #3
Du kunne prøve denne kode:

<?php
//http://www.eksperten.dk/spm/821040
if(isset($_REQUEST['search'])){
    $phrase = $_REQUEST['phrase'];
    $dir = "821040/"; //Dit HTML bibliotek og husk at slut med /
    $found = false;
   
    foreach(glob($dir . "*.html") as $filename) {
    $content = file_get_contents($filename);
    if(preg_match('/.{0,50}'.preg_quote($phrase).'.{0,50}/si', $content, $match)){
        $found = true;
        $file = basename($filename);
        if(preg_match('%<title>(.*?)</title>%si', $content, $title)) {
                $result = $title[1];
            } else {
                $result = $file;
            }
        echo '<a href="'.$dir.$file.'">'.$result.'</a>';
        echo '<p>' . $match[0] . '</p>';
        flush();
    }
    }
   
    if($found === false && !empty($phrase)){
        echo "Vi fandt desv&aelig;rre ikke: <b>" . $phrase . "</b><br>";
    }
}
?>
<form action="821040exp.php" method="post">
    <input type="hidden" name="search" value="1" />
    <input type="text" name="phrase" />
    <input type="submit" name="search" value="S&oslash;g" />
</form>
Avatar billede l_domino_l Nybegynder
04. juni 2008 - 10:36 #4
Hmmm.... den finder ikke rigtigt noget...

alle filerne ligger i samme bibliotek så det skulle vel ikke være det?
Avatar billede jakobdo Ekspert
04. juni 2008 - 10:39 #5
Har du husket at rette:

$dir = "821040/"; //Dit HTML bibliotek og husk at slut med /
Avatar billede l_domino_l Nybegynder
04. juni 2008 - 10:40 #6
Ja har sat den til "/" og så også rettet nede i:

<form action="sog.php" method="post">
Avatar billede jakobdo Ekspert
04. juni 2008 - 10:53 #7
Og filerne ender på .html ?
Eller kunne det være det kun var .htm ?

  foreach(glob($dir . "*.html") as $filename) { //Her styres hvilken slags fil der søges i.
Avatar billede l_domino_l Nybegynder
04. juni 2008 - 10:54 #8
Nix... samme fejl... og filerne ender på HTML
Avatar billede jakobdo Ekspert
04. juni 2008 - 11:03 #9
Du må gøre noget galt, for koden virker fint hos mig. :o)
Avatar billede l_domino_l Nybegynder
04. juni 2008 - 11:03 #10
Fandt fejlen.... jeg skal IKKE have "/" men bare ""....
Avatar billede l_domino_l Nybegynder
04. juni 2008 - 11:10 #11
Synes måske bare det er lidt træls at den skriver en del af filen, kan den ikke bare skrive titlen eller måske et overskrift??
Avatar billede jakobdo Ekspert
04. juni 2008 - 11:15 #12
Det kan jo laves som du ønsker. :o)
Avatar billede l_domino_l Nybegynder
04. juni 2008 - 11:20 #13
Kan man feks på hver af mine sider lave en fiktiv overskrift til søge funktionen, evt ved brug af tags? Og måske også give den en anden hyperlink adresse....???
Avatar billede jakobdo Ekspert
04. juni 2008 - 11:28 #14
Det ville man da godt kunne lave ja.
Avatar billede l_domino_l Nybegynder
04. juni 2008 - 11:38 #15
Du kan lige få point her!

Så er der en mere:
http://www.eksperten.dk/spm/833814
Avatar billede jakobdo Ekspert
04. juni 2008 - 11:40 #16
Svar!
Avatar billede jakobdo Ekspert
04. juni 2008 - 11:50 #17
Takker for point.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester