Forum: ASP Classic |
Thema:
Re: Mit RegEx Html ignorieren |
Von:
G. Guest (
29.10.2003 08:40) |
Hi Sven
Das hab ich vor dem RegEx Versuch auch probiert, aber es hat nicht so recht gefunzt.
Was ich hin gekriegt habe war, das er mir die Links in Ruhe lässt, aber leider nicht die HTMl-Tags.
Vielleicht findest Du ja eine Lösung:
-----------------------------------------------------------
function ToReplace(Text, SuchBegriff)
'Startwerte für die Such/Replace Funktion
TextLaenge = Len(Text)
SuchBegriffLaenge = Len(SuchBegriff)
SuchPosition = 1
aktuellePosition = 1
korrigiertePosition = 1
nText = ""
nrText = ""
tempText = ""
tempSuchbegriff = ""
DO WHILE aktuellePosition <> 0
'Position des gefundenen Suchbegriffes
aktuellePosition = InStr(SuchPosition, Text, SuchBegriff, 1)
'Wenn kein Suchbegriff gefunden --> Abbruch der Schleife
if aktuellePosition = 0 Then
EXIT DO
end if
'Zu prüfender Textbereich bestimmen
'Länge des Textes vor Suchbegriff
ctLaenge = aktuellePosition - SuchPosition
checkText = Mid(Text, SuchPosition, ctLaenge)
checkTextLaenge = Len(checkText)
iPos = 1
yPos = 1
iAnzahl = 0
yAnzahl = 0
iCursorPos = 1
yCursorPos = 1
iSuchText ="<a"
iSuchTextLaenge = Len(iSuchText)
ySuchText ="</a>"
ySuchTextLaenge = Len(ySuchText)
'check erfolgreich wenn gleich viele "<a" wie "</a>" gefunden werden
'wenn nicht, ist es ein Link
While iCursorPos <> 0
iCursorPos = InStr(iPos, checkText, iSuchText, 1)
if iCursorPos <> 0 Then
'Anzahl der gefunden "iSuchText"
iAnzahl = iAnzahl +1
'Neue Startposition um den Text zu durchsuchen
iPos = iCursorPos + iSuchTextLaenge
end if
WEND
While yCursorPos <> 0
yCursorPos = InStr(yPos, checkText, ySuchText, 1)
if yCursorPos <> 0 Then
'Anzahl der gefunden "ySuchText"
yAnzahl = yAnzahl +1
'Neue Startposition um den Text zu durchsuchen
yPos = yCursorPos + ySuchTextLaenge
end if
WEND
'Übereinstimmender Begriff mit Suchbegriff (mögliche unterschiedliche Schreibweise)
tempSuchbegriff = Mid(Text, aktuellePosition, SuchBegriffLaenge)
'Korrigierung der aktuellen Position
'Ermittlung des Textendes (vor Suchbegriff)
korrigiertePosition = aktuellePosition -1
'Länge des Textes vor Suchbegriff
tLaenge = aktuellePosition - SuchPosition
'Hat es Text vor dem Suchbegriff?
if aktuellePosition <> 0 Then
'Text bis Suchbegriff
tempText = Mid(Text, SuchPosition, tLaenge)
else
tempText = ""
end if
'Vergleich der Anzahl gefundenen iSuchText, ySuchText
'Wenn die Anzahl gleich ist, befindet sich der gefundene String nicht in einem Link
if yAnzahl = iAnzahl Then
'Text wird erstellt
nText = nText & tempText & "<span class='mark'>" & tempSuchbegriff & "</span>"
else
'gefundener String in einem <a Tag, Suchbegriff nicht markieren
'Text wird erstellt
nText = nText & tempText & tempSuchbegriff
end if
'Neue Startposition für die neue Suche wird erstellt
SuchPosition = aktuellePosition + SuchBegriffLaenge
LOOP
'Rest Text (ab dem letzten gefundenen Suchbegriff)
nrText = Mid(Text, SuchPosition, TextLaenge)
'Gibt den neu erstellt Text zurück
ToReplace = nText & nrText
End Function
-----------------------------------------------------------
Aufruf:
MarkTitel = ToReplace(Text, SuchBegriff)
Response.Write(MarkTitel)
-----------------------------------------------------------
Gruss
Daniel
Betreff |
Von |
Datum |
|
  |
Re: Mit RegEx Html ignorieren
Also je mehr ich darüber nachdenke desto eher meine ich das es ziemlich unglücklich ist html Tags in der DB zu haben.<br>Wenn z.B. einer nach "re" sucht...<br>Würde auch ein <a href... einen Treffer... |
 |
 |
 |
|
|
Sven
Buhk
|
29.10.2003 09:13 |
|
  |
Re: Mit RegEx Html ignorieren
Kannst mir auch ne Mail Adresse geben dann schick ich Dir ne Telefonnummer und wir telefonieren drüber denke das geht schneller oder ? |
 |
 |
 |
|
|
Sven
Buhk
|
29.10.2003 09:14 |
|
  |
Re: Mit RegEx Html ignorieren
Danke!<br><br>daniel.meier<br>at<br>fachmediacom(dot)ch<br><br>(ich hoffe, so kriegen mich die emailSpider nicht ;-) ) |
 |
 |
 |
|
|
G.
Guest
|
29.10.2003 09:53 |
|
|
Antworten
Vorsicht bei der Eingabe: Die Zeichen ' oder -- sind nicht erlaubt!