Avatar billede Slettet bruger
05. august 2004 - 19:14 Der er 5 kommentarer

søgefunktion kan ikke finde ord med html-koder

Jeg har brugt programmet Search Engine Builder Professional til at generere en søgefunktion (kan ses på www.lm-grafik.dk/madsensMad4/). Den virker fint nok med undtagelse af at den kun finder ord med æ,ø,å hvis de IKKE er skrevet i html-koder (eks. html-koden for æ er æ).

Er der nogen der kan hjælpe mig med at få søgefunktionen til at finde ord der indeholder html-koder for æ,ø,å og lign. tegn???

Søgefunktionen bruger filerne searchfunc.php og webdata.php (kan ses på www.lm-grafik.dk/searchfunc.txt og www.lm-grafik.dk/webdata.txt). Jeg har fundet et script der oversætter html-koder til iso-koder og har prøvet at indsætte det i filen searchfunc.php (omfatter et php-script i starten og slutningen) men uden held. Måske har jeg brugt det forkert - måske kan det slet ikke bruges (jeg har ikke særlig stor erfaring med php).

Oversætter-scriptet ser således ud:

$html2iso = array(
  '"'  => '"',
  ' '  => CHR(160), // ' '
  '¡'  => CHR(161), // '¡'
  '¢'  => CHR(162), // '¢'
  '£'  => CHR(163), // '£'
  '¤' => CHR(164), // '¤'
  '¥'    => CHR(165), // '¥'
  '¦' => CHR(166), // '¦'
  '§'  => CHR(167), // '§'
  '¨'    => CHR(168), // '¨'
  '©'  => CHR(169), // '©'
  'ª'  => CHR(170), // 'ª'
  '«'  => CHR(171), // '«'
  '¬'    => CHR(172), // '¬'
  '­'    => CHR(173), // ' '
  '®'    => CHR(174), // '®'
  '¯'  => CHR(175), // '¯'
  '°'    => CHR(176), // '°'
  '±' => CHR(177), // '±'
  '²'  => CHR(178), // '²'
  '³'  => CHR(179), // '³'
  '´'  => CHR(180), // '´'
  'µ'  => CHR(181), // 'µ'
  '¶'  => CHR(182), // '¶'
  '·' => CHR(183), // '·'
  '¸'  => CHR(184), // '¸'
  '¹'  => CHR(185), // '¹'
  'º'  => CHR(186), // 'º'
  '»'  => CHR(187), // '»'
  '¼' => CHR(188), // '¼'
  '½' => CHR(189), // '½'
  '¾' => CHR(190), // '¾'
  '¿' => CHR(191), // '¿'

  'À' => CHR(192), // 'À'
  'Á' => CHR(193), // 'Á'
  'Â'  => CHR(194), // 'Â'
  'Ã' => CHR(195), // 'Ã'
  'Ä'  => CHR(196), // 'Ä'
  'Å'  => CHR(197), // 'Å'
  'Æ'  => CHR(198), // 'Æ'
  'Ç' => CHR(199), // 'Ç'
  'È' => CHR(200), // 'È'
  'É' => CHR(201), // 'É'
  'Ê'  => CHR(202), // 'Ê'
  'Ë'  => CHR(203), // 'Ë'
  'Ì' => CHR(204), // 'Ì'
  'Í' => CHR(205), // 'Í'
  'Î'  => CHR(206), // 'Î'
  'Ï'  => CHR(207), // 'Ï'
  'Ð'    => CHR(208), // 'Ð'
  'Ñ' => CHR(209), // 'Ñ'
  'Ò' => CHR(210), // 'Ò'
  'Ó' => CHR(211), // 'Ó'
  'Ô'  => CHR(212), // 'Ô'
  'Õ' => CHR(213), // 'Õ'
  'Ö'  => CHR(214), // 'Ö'
  '×'  => CHR(215), // '×'
  'Ø' => CHR(216), // 'Ø'
  'Ù' => CHR(217), // 'Ù'
  'Ú' => CHR(218), // 'Ú'
  'Û'  => CHR(219), // 'Û'
  'Ü'  => CHR(220), // 'Ü'
  'Ý' => CHR(221), // 'Ý'
  'Þ'  => CHR(222), // 'Þ'
  'ß'  => CHR(223), // 'ß'

  'à' => CHR(224), // 'à'
  'á' => CHR(225), // 'á'
  'â'  => CHR(226), // 'â'
  'ã' => CHR(227), // 'ã'
  'ä'  => CHR(228), // 'ä'
  'å'  => CHR(229), // 'å'
  'æ'  => CHR(230), // 'æ'
  'ç' => CHR(231), // 'ç'
  'è' => CHR(232), // 'è'
  'é' => CHR(233), // 'é'
  'ê'  => CHR(234), // 'ê'
  'ë'  => CHR(235), // 'ë'
  'ì' => CHR(236), // 'ì'
  'í' => CHR(237), // 'í'
  'î'  => CHR(238), // 'î'
  'ï'  => CHR(239), // 'ï'
  'ð'    => CHR(240), // 'ð'
  'ñ' => CHR(241), // 'ñ'
  'ò' => CHR(242), // 'ò'
  'ó' => CHR(243), // 'ó'
  'ô'  => CHR(244), // 'ô'
  'õ' => CHR(245), // 'õ'
  'ö'  => CHR(246), // 'ö'
  '÷' => CHR(247), // '÷'
  'ø' => CHR(248), // 'ø'
  'ù' => CHR(249), // 'ù'
  'ú' => CHR(250), // 'ú'
  'û'  => CHR(251), // 'û'
  'ü'  => CHR(252), // 'ü'
  'ý' => CHR(253), // 'ý'
  'þ'  => CHR(254), // 'þ'
  'ÿ'  => CHR(255)  // 'ÿ'
  );

function strip_entities($str)
{
  global $html2iso;
  static $entities, $isochars;

  if (! isset($entities))
    {
      reset($html2iso);
      while( list($key, $value) = each($html2iso))
        {
          $entities[] = "/$key/"; // Perl pattern
          $isochars[] = $value;    // replacement
        }   
    }

  return preg_replace( $entities, $isochars, $str);
}
Avatar billede Slettet bruger
05. august 2004 - 19:16 #1
Jeg ved ikke om det er en lappeløsning, men ellers kunne du jo lave tre ifsætninger, der lavede en søgning på 'æ' om til en søgning på "æ"

--
pacroon
Avatar billede hf Nybegynder
05. august 2004 - 22:16 #2
Du kunne evt. køre brugerens input gennem htmlentities()
Så omsættes alle specialtegn til html-entiteter - dvs. å bliver til å osv.
Men så kan du kun finde entitets-forekomster af æøå.
Det er med andre ord enten eller.
Se: http://dk2.php.net/manual/da/function.htmlentities.php
Avatar billede Slettet bruger
06. august 2004 - 07:10 #3
måske skulle du ændret dit banner på siden... jeg kører med 1280*1074 opløsning, og jeg ser 1,3 banner... der står "Kos" og 3 billeder helt ude til højre!
Avatar billede coderdk Praktikant
07. august 2004 - 02:07 #4
Uhm, i stedet for det lange array, kan du bruge

  get_html_translation_table( HTML_ENTITIES );

Den returnerer et array med f.eks. "Æ" => "Æ" - du kan så vende arrayet om, med array_flip() så det bliver til "Æ" => "Æ" :)

  $char2html = get_html_translation_table( HTML_ENTITIES );
  $html2char = array_flip( $char2html );

  echo $char2html["Æ"]; // Udskriver Æ
  echo $html2char["&AElig"]; // Udskriver Æ

Men som hf skriver, så kan du bruge htmlentities() til at lave Æ om til Æ i en streng i ét hug. Det omvendte kan du gøre med html_entity_decode() - altså lave alle forekomster af Æ osv om til Æ og de andre tilsvarende.
Avatar billede coderdk Praktikant
18. december 2004 - 14:27 #5
Fået det til at fungere?
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