Hej igen! Hej!
Får följande fel: Hej! Hej! Hur får jag nu detta att fungera tillsammans med en tabell? Visst. Regexp kanske är kraftfullare men min metod är lättare för gemene man: Tror jag lyckats optimera funktionen lite...Byta ut taggar?
har en ny fråga angående taggar!?
Hur gör jag för att exempelvis ändra så att all text som innehåller:
<kompis>Joel</kompis> Blir Joel ?
Nån idé?
*Joel!*Sv: Byta ut taggar?
> Hur gör jag för att exempelvis ändra så att all text som innehåller:
> <kompis>Joel</kompis> Blir Joel
Utan att ha testat koden denna gång så borde något i den här genre fungera:
strData = "min lilla text med <kompis>Tom</kompis>"
Set objRE = New RegExp
objRE.Pattern = "<kompis>(.*?)</kompis>"
objRE.Global = True
' om detta inte fungerar
strData = objRE.Replace(strData, "$1")
' så prova den här istället:
' strData = objRE.Replace(strData, "$1")
Set objRE = Nothing
Lycka till och lev väl,
Tom S.Sv: Byta ut taggar?
Unexpected quantifier
På båda de raderna du sa man skulle testa med.
*Joel!Sv: Byta ut taggar?
I så fall beror det nog på den version av RegExp som du har på burken, som inte riktigt klarar av non-greedy-quantifiers. Prova uppgradera till den senaste, Microsoft Scripting Engines Version 5.5, på adressen
http://msdn.microsoft.com/scripting/vbscript/download/vbsdown.htm
Lycka till och lev väl,
Tom S.Sv: Byta ut taggar?
Huh... låter lite märkligt. Provade koden nu på datorn här på jobbet och det fungerar utmärkt...
Vad får du fram när du kör
Response.write ScriptEngine & " Version " & ScriptEngineMajorVersion & "." & ScriptEngineMinorVersion
?
Lev väl,
Tom S.Sv: Byta ut taggar?
<code>
Function FixaKompis(strData)
Set objRE = New RegExp
objRE.Pattern = "<kompis>(.*?)</kompis>"
objRE.Global = True
' Detta gör om till en länk
Set rstMedlemmar = Connect.Execute("Select Id, Silvernamn From medlemmar Where Silvernamn='" & LCase("$1") & "'")
strData = objRE.Replace(strData, "$1")
Set objRE = Nothing
FixaKompis = strData
End Function
</code>
---------------------------------------------
Alltså, jag vill att den hämtar via villkoret att "silvernamn" = Det man angav i <kompis>Angav</kompis> Taggen. för att sedan använda länken:
main.asp?pg=dinsida&id=<%=rstMedlemmar.Fields(0)%>
*Joel*Sv: Byta ut taggar?
<%
Function FixaKompis(strData)
Do While Instr(1, strData, "<kompis>", vbTextCompare) <> 0
iBegin = Instr(1, strData, "<kompis>", vbTextCompare) + 8
iEnd = Instr(1, strData, "</kompis>", vbTextCompare)
If iBegin <> 0 And iEnd <> 0 Then
strKompis = Mid(strData, iBegin)
strKompis = Left(strKompis, Instr(1, strKompis, "<", vbTextCompare) - 1)
End If
strData = Replace(strData, "<kompis>" & strKompis & "</kompis>", "" & strKompis & "")
Loop
FixaKompis = strData
End Function
%>
<% = FixaKompis("Här är några kompisar: <kompis>Erik</kompis>, <kompis>Joel</kompis> och <kompis>Tom</kompis>. =)") %>Sv: Byta ut taggar?
Function FixaKompis(strData)
Dim lBegin
Dim lEnd
Dim strFind
Dim strKompis
Const Prefix = "<kompis>"
Const Suffix = "</kompis>"
Dim PrefixLen
Dim SuffixLen
Dim PrefixSuffixLen
PrefixLen = Len(Prefix)
SuffixLen = Len(Suffix)
PrefixSuffixLen = PrefixLen + SuffixLen
lBegin = InStr(1, strData, Prefix, vbTextCompare)
Do While lBegin
lEnd = InStr(lBegin, strData, Suffix, vbTextCompare) + SuffixLen
If lEnd Then
strFind = Mid$(strData, lBegin, lEnd - lBegin)
strKompis = Mid$(strFind, PrefixLen + 1, Len(strFind) - PrefixSuffixLen)
strData = Replace(strData, strFind, "" & strKompis & "", 1, -1, vbTextCompare)
lBegin = InStr(lEnd, strData, Prefix, vbTextCompare)
Else
Exit Do
End If
Loop
FixaKompis = strData
End Function