Avatar billede bonden Nybegynder
24. juni 2003 - 12:21 Der er 7 kommentarer og
1 løsning

Søgefunktion, der lister ord i dokumentet

Jeg sidder og leger lidt med tanken om at lave en søgefunktion, der kan løbe igennem et dokument og i bunden liste de ord, der indeholder en bestemt tegnkombination - men jeg går lidt fast i, hvordan jeg lige skal gribe det an. Nogle, der har idéer?
Avatar billede jakoba Nybegynder
24. juni 2003 - 12:35 #1
det første du skal gøre er at definere hvad et 'ord' er. du kan gøre det så sompelt som "fra eet blanktegn til et andet". eller grumme meget mere kompliceret (men mere korrekt):
  fra (start of file eller linieskift eller blanktegen eller '(' eller '[' eller ...)
  til (linieskift eller eof eller blanktegn eller '.' eller ',' eller ';' eller ']' eller ...)

Når du har gjort det kan du dele filen op i ord. en god måde at gøre det kunne være at lave et associativt array:
  $alle_ord = array();
  while ( der er mere i filen ) {
      $nesteord = find_neste_ord( );
      $alle_ord[ $nesteord ] = $nesteord;
  }
nu har du så et pænt stort array men alle ordene i een gang for hvert ord.
tilsidst læber du så det array igennem
  foreach( $alle_ord as $value ) {
      if ( ! (strpos( $value, "streng du leder efter" ) === false) ) { // ===, ikke ==
          // udskriv det ord
      }
  }

mvh JakobA
Avatar billede bonden Nybegynder
24. juni 2003 - 12:48 #2
Noget i den stil her?:

$alle_ord = mysql_db_query($dbName, "select * from tekst where id = 1");
  while (mysql_fetch_array($alle_ord)) {
      $nesteord = find_neste_ord();
      $alle_ord[ $nesteord ] = $nesteord;
  }
  foreach( $alle_ord as $value ) {
      if ( ! (strpos( $value, "@" ) === false) ) { // ===, ikke ==
        echo "$value;"; // udskriv det ord
      }
  }
Avatar billede jakoba Nybegynder
24. juni 2003 - 13:03 #3
jep, men du have have lavet en funktion  find_nest_ord() der henter ordene et ad gangen på basis af de regler for "hvad er et ord" som du bestemmer dig for.
Avatar billede bonden Nybegynder
24. juni 2003 - 13:07 #4
Den var værre - Bare jeg i starten kan definere et ord som det sted, der mellem " og " vil det være en god start.
Avatar billede jakoba Nybegynder
24. juni 2003 - 13:08 #5
Næe how. den er ikke korrekt. det du får fra mysql_db_query er IKKE et array. det er et resultatsæt.
$alle_ord = array();    // start med et tomt array
$resultatset = mysql_db_query($dbName, "select * from tekst where id = 1");
  while ($row = mysql_fetch_array($resultatset)) {
      $i = 0;
      while ( $nesteord = find_neste_ord( $row, $i ) ) { // find ord nr $i i $row
          $alle_ord[ $nesteord ] = $nesteord;      // husk ordet
      }
  }
  foreach( $alle_ord as $value ) {
      if ( ! (strpos( $value, "@" ) === false) ) { // ===, ikke ==
        echo "$value;"; // udskriv det ord
      }
  }

mvh JakobA
Avatar billede bonden Nybegynder
24. juni 2003 - 13:47 #6
Jeg er helt på bar bund med det med at definere "find_neste_ord();"
Enten er det klappen, der er gået ned eller også er det simpelthen noget, jeg ikke kender til. Har været en tur i manualen uden at det har hjulpet.
Avatar billede jakoba Nybegynder
24. juni 2003 - 13:55 #7
Prøv at starte med at lave din regel for hvad der er et ord. det kan du gøre i ganske almindeligt menneskesprog; hvis blot du husker på at regelen skal være meget præcis.
Avatar billede bonden Nybegynder
14. februar 2005 - 19:16 #8
lukker
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