Zum Inhalt springen

suchergebnisse highlighten


Empfohlene Beiträge

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??

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 ...

Link zu diesem Kommentar
Auf anderen Seiten teilen

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...

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...