forTeesSake Geschrieben 24. März 2004 Teilen Geschrieben 24. März 2004 hi, ich möchte gerne suchergebnisse mit hilfe von asp highlighten dazu hab ich mir eine kleine funktion gebastelt die in einem string einen anderen such und wenn er vorkommt das gefundene mit <font color='#cc0000'>das gefundene</font> replaced. verwirrend? einfach mal ansehen: <% function highlightSearchWords(str,searchStr) highlightSearchWords = replace(str,searchStr,"<font color='#cc0000'>" & searchStr & "</font>") end function %> tja, nur leider gehen mir so grossbuchstaben verloren, bzw. der searchstring wird nicht gefunden, da case sensitiv... beispiel: sucheingabe "becke" gefunden über sql abfrage: Heinz Becker Fritz Becker Beckersbacher Chor wenn ich da nun mein replace drauflassen lasse passiert folgendes: "becke" "Heinz Becker" ->keine übereinstimmung "becke" lcase("Heinz Becker") -> führt dazu, dass ich dann leider im ergebnis folgendes dastehen habe: <font color="#000000">heinz</font><font color="#cc0000">becke</font><font color="#000000">r</font> also heinz becker klein, aber ich brauche <font color="#000000">Heinz</font><font color="#cc0000">Becke</font><font color="#000000">r</font> hat da jemand ne idee und vor allem: hats jemand verstanden?? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 24. März 2004 Teilen Geschrieben 24. März 2004 schreib doch das tolowercase in ne extra variable und überschreibe dir deinen suchbegriff damit nicht Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
forTeesSake Geschrieben 24. März 2004 Autor Teilen Geschrieben 24. März 2004 hmm das hab ich nicht ganz verstanden...sorry Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
*I C Q* Geschrieben 24. März 2004 Teilen Geschrieben 24. März 2004 IIRC gibt es für das "replace" einen Parameter der festlegt ob man einen BinaryCompare (also case-sensitive) oder TextualCompare (also case-insensitive) durchführen möchte. Damit sollte es gehen! EDIT: Versuch's mal so: highlightSearchWords = replace(str,searchStr,"<font color='#cc0000'>" & searchStr & "</font>",,,1) Die "1" steht dann für "TextualCompare", die beiden weggelassenen Parameter sind start und count! ICQ Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
forTeesSake Geschrieben 24. März 2004 Autor Teilen Geschrieben 24. März 2004 stimmt. hab ich gerade mal nachgeguckt. aber das problem ist ja, dass ich nicht weiß wie das gefundene wort oder der teil im suchstring geschrieben wurde. somit kann ich ja auch nicht replacen (egal ob case oder nicht sensitive) bsp: ich suche nach "heinz" finde ich dann meinetwegen not case sensitiv in "Heinz Becker" und möchte nun "Heinz" und nicht "heinz" mit meinem roten font highlighten. das geht ja aber leider nicht, weil ich nicht weiss wie "heinz" in "Heinz Becker" gefunden wurde...:confused: EDIT: @ICQ: jupp deine funktion stimmt. leider löst das das problem aber nicht, da wie gesagt das ersetzen noch das problem ist. das finden funzt jetzt ja schon mal ... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
forTeesSake Geschrieben 24. März 2004 Autor Teilen Geschrieben 24. März 2004 einfacher wäre es gewesen das ganze mit google zu erklären: wenn ich in google einen suchbegriff eingebe kommen alle websiten die den suchbegriff enthalten. dieser suchbegriff wird aber fett dargestellt, wobei er im "original" erscheint. also mein suchbegriff ist "highlight" google zeigt aber dann den text einer website folgender massen an: Das Highlight der Gala war... wobei Highlight ja gross bleibt... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
forTeesSake Geschrieben 24. März 2004 Autor Teilen Geschrieben 24. März 2004 habe folgende DOTNET regex funktion gefunden, die aber leider in "normalem" asp nicht funktioniert, da die methode ".escape" nicht vorhanden ist. vielleicht kann das jemand in "normales" asp bringen oder hat sonst noch eine idee... --------------------------------------------- --------------------------------------------- Function Highlight(Search_Str as String, _ InputTxt as String, _ StartTag as String, _ EndTag as String) As String Dim ResultStr As String Return Regex.Replace(InputTxt, "\b(" & Regex.Escape(Search_Str) & ")\b", _ StartTag & "$1" & EndTag, RegExOptions.IgnoreCase) End Function --------------------------------------------- --------------------------------------------- danke Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
*I C Q* Geschrieben 24. März 2004 Teilen Geschrieben 24. März 2004 Wie wär's denn mit folgendem (nur grob mit VBSkript getestet, daher keine Gewähr auf Funktionalität): neuertext = origtext aktuellepos = 1 do result = InStr(aktuellepos,neuertext,suchtext,1) if result > 0 then neurein = "<font color=#ff0000>" & mid(neuertext,result,len(suchtext)) & "</font>" neuertext = left(neuertext,result-1) & neurein & mid(neuertext,result+len(suchtext)) aktuellepos = result + len(neurein) end if loop until result = 0 ICQ Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
forTeesSake Geschrieben 24. März 2004 Autor Teilen Geschrieben 24. März 2004 hossa! das funktioniert. ich hatte was ähnliches ungefähr dreimal so langes und es scheiterte immer an einem leerzeichen. respekt und wirklich gaaaaanz vielen dank!!! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.