Suchwort unterstreichen..

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #46
    @abraxax
    die Zeile aus Deinem Post macht bei mir einen Parse error und etwas modifiziert gar nichts ausser suchwort zu löschen...
    Beantworte nie Threads mit mehr als 15 followups...
    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

    Kommentar


    • #47
      Original geschrieben von Abraxax
      @TobiaZ
      kannst dir ja einstellen, dass du mehr posts auf eine seite packst.
      seit heute sogar bis zu 120 ...
      Deswegen muss ich auch nur eine Seite zurück blättern.
      (hab 40 Stück, wir wollens ja nicht übertreifen.)

      Kommentar


      • #48
        Original geschrieben von MelloPie
        @abraxax
        die Zeile aus Deinem Post macht bei mir einen Parse error und etwas modifiziert gar nichts ausser suchwort zu löschen...
        naja. habe den code ja auch nicht getestet, war eher ein lösungsansatz ...
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #49
          PHP-Code:
          if ( isset($HTTP_GET_VARS['highlight']) )
          {
                  
          $highlight_match = array();

                  
          //
                  // Split words and phrases
                  //
                  
          $words explode(' 'trim(urldecode($HTTP_GET_VARS['highlight'])));

                  for(
          $i 0$i count($words); $i++)
                  {
                          if ( 
          trim($words[$i]) != '' )
                          {
                                  
          $highlight_match[] = '#\b(' str_replace("*""([\w]+)?"$words[$i]) . ')\b#is';
                          }
                  }

                  
          $highlight_active = ( count($highlight_match) ) ? true false;
          }
          else
          {
                  
          $highlight_active false;

          PHP-Code:
           if ( $highlight_active )
                  {
                          if ( 
          preg_match('/<.*>/'$message) )
                          {
                                  
          $message preg_replace($highlight_match'<!-- #sh -->\1<!-- #eh -->'$message);

                                  
          $end_html 0;
                                  
          $start_html 1;
                                  
          $temp_message '';
                                  
          $message ' ' $message ' ';

                                  while( 
          $start_html strpos($message'<'$start_html) )
                                  {
                                          
          $grab_length $start_html $end_html 1;
                                          
          $temp_message .= substr($message$end_html 1$grab_length);

                                          if ( 
          $end_html strpos($message'>'$start_html) )
                                          {
                                                  
          $length $end_html $start_html 1;
                                                  
          $hold_string substr($message$start_html$length);

                                                  if ( 
          strrpos(' ' $hold_string'<') != )
                                                  {
                                                          
          $end_html $start_html 1;
                                                          
          $end_counter 1;

                                                          while ( 
          $end_counter && $end_html strlen($message) )
                                                          {
                                                                  if ( 
          substr($message$end_html1) == '>' )
                                                                  {
                                                                          
          $end_counter--;
                                                                  }
                                                                  else if ( 
          substr($message$end_html1) == '<' )
                                                                  {
                                                                          
          $end_counter++;
                                                                  }

                                                                  
          $end_html++;
                                                          }

                                                          
          $length $end_html $start_html 1;
                                                          
          $hold_string substr($message$start_html$length);
                                                          
          $hold_string str_replace('<!-- #sh -->'''$hold_string);
                                                          
          $hold_string str_replace('<!-- #eh -->'''$hold_string);
                                                  }
                                                  else if ( 
          $hold_string == '<!-- #sh -->' )
                                                  {
                                                          
          $hold_string str_replace('<!-- #sh -->''<span style="color:#' $theme['fontcolor3'] . '"><b>'$hold_string);
                                                  }
                                                  else if ( 
          $hold_string == '<!-- #eh -->' )
                                                  {
                                                          
          $hold_string str_replace('<!-- #eh -->''</b></span>'$hold_string);
                                                  }

                                                  
          $temp_message .= $hold_string;

                                                  
          $start_html += $length;
                                          }
                                          else
                                          {
                                                  
          $start_html strlen($message);
                                          }
                                  }

                                  
          $grab_length strlen($message) - $end_html 1;
                                  
          $temp_message .= substr($message$end_html 1$grab_length);

                                  
          $message trim($temp_message);
                          }
                          else
                          {
                                  
          $message preg_replace($highlight_match'<span style="color:#' $theme['fontcolor3'] . '"><b>\1</b></span>'$message);
                          }
                  } 
          Das hab ich in dem quellcode eines forums gefunden, ka checke das bis jetzt noch nicht ganz. werd mir das mal reinziehen...
          nein?

          Kommentar


          • #50
            guten tag.

            ich bin beim suchen nach einer highlight-funktion auf diesen thread gestoßen.
            ich hoffe es schaut ab und zu noch jemand vorbei, ist ja ein schon ziemlich altes thema.

            also, ich habe mir die funktion:
            Original geschrieben von MelloPie
            PHP-Code:
            // underline a search string
            function underlineSearchString($string,$suchwort){
                return 
            eregi_replace"($suchwort)"'<u>\\1</u>'$string);

            mal vorgenommen und bei mir funktioniert sie einwandfrei.

            mein problem ist, das diese funktion nur ganze wörter, teile eines wortes oder nur direkt beieinander stehende wörter highlighten kann.

            ich habe selbst eine funktion geschrieben (Highlight Google Search Query) die über den HTTP_REFERER (wenn er denn mitgeliefert wird) den query-string der google-suche (&q= ...) ausliest, und die entsprechnden textstellen farblich hervorhebt.
            PHP-Code:
            error_reporting(E_ALL);

            $text "Lorem ipsum dolor sit amet, consetetur sadipscing -- Lorem no -- elitr, sed diam nonumy";

            //für testzwecke : HTTP_REFERER
            $referer "http://www.google.com/search?num=100&hl=de&newwindow=1&safe=off&[U][B]q=Lorem+no+elitr[/B][/U]&btnG=Suche&lr="

            function highlightGoogleSearchQuery($hgsq_str) {

            // den HTTP_REFERER auslesen
                
            $hgsq_ref $referer// <- nur für diesen test
                //$hgsq_ref = parse_url($_SERVER['HTTP_REFERER']); // <- sonst diese zeile

            // wenn der HTTP_REFERER 'google' als host UND 'q=' im query-teil enthält:
                
            if ( (strpos($hgsq_ref['host'], "google") !== false) && (strpos($hgsq_ref['query'], "q=") !== false) ) {

                    
            // zerlege den query-string der url
                    // schneide alles weg, was vor 'q=' und nach dem nächsten '&' kommt
                    
            $hgsq_query_string preg_grep('/q=(.*?)(&|\n|\r|)/i'explode("&"$hgsq_ref['query']));

                    
            // decodiere alle maskierten zeichen der url (+,%)
                    // entferne 'q=' aus dem string
                    // lies den query-string in ein array ein.
                    
            $hgsq_queries explode(" "substr(urldecode($hgsq_query_string[key($hgsq_query_string)]), 2));

                    
            // ----- DIE foreach-SCHLEIFE FUNKTIONIERT NOCH NICHT -----
                    // ----- DIE SCHLEIFE ERSETZT NUR DIE erste VARIABLE ----
                    
            foreach ($hgsq_queries as $hgsq_query) {

                        
            // durchsuche '$hgsq_str' nach übereinstimmungen mit '$hgsq_querys'
                        // ersetze die entsprechenden stellen durch <span class="query">\\1</span>
                        // wobei '\\1' das gefundene, zu ersetznde wort ist.
                        
            return eregi_replace"($hgsq_query)"'<span class="query">\\1</span>'$hgsq_str);
                    }
                }
            // sonst:
                
            else {
                    
            // gibt den inhalt von '$hgsq_str' unverändert zurück
                    
            return $hgsq_str;
                }
            }

            echo 
            highlightGoogleSearchQuery($text); 
            wie gesagt, das erste wort (in diesem test 'lorem') wird gefunden, und zwar egal in welcher schreibweise (ob GROSS oder klein).
            mein problem liegt in der schleife.
            es kommt keine fehlermeldung.
            die funktion tut einfach nicht was ich will. *schmoll*

            hat jemand eine idee?

            lg & thx andyB.
            Zuletzt geändert von andyB; 30.01.2007, 00:08.

            Kommentar


            • #51
              "fehler" gefuden!

              Original geschrieben von andyB
              PHP-Code:
              //[...]
              foreach ($hgsq_queries as $hgsq_query) {
                  return 
              eregi_replace"($hgsq_query)"'<span class="query">\\1</span>'$hgsq_str);
              }
              //[...] 
              geändert zu:
              PHP-Code:
              //[...]
              $str $hgsq_str;
              foreach (
              $hgsq_queries as $hgsq_query) {
                  
              $str eregi_replace"($hgsq_query)"'<span class="query">\\1</span>'$str);
              }
              return 
              $str;
              //[...] 
              gruß andyB.

              Kommentar

              Lädt...
              X