PalleMedlem sedan apr. 20003 174 inlägg Jag har en regExp-funktion som omvandlar http:// till länkar, denna funktion
skulle jag nu vilja kombinera med en [ url=länk]länktext-funktion också..
Eftersom jag inte är så hajj på detta med regExp så undrar jag nu hur jag
ska modifiera mina pattern för att få det att fungera i en och samma funktion?
De två nuvarande:
[red]regExp.Pattern = "((?:mailto\:|(?:news|(?:ht|f)tp(?:s?))\://){1}\S+)"
regExp.Pattern = "\[url=(.*)\](.*)\[/url\]" [/red]
Kanske vore denna funktion något att bygga vidare på:
<%
Function FCode(str)
str = Replace(str,"<","<")
str = Replace(str,VbCrLf,"<br />")
Set objRE = New regexp
objRE.Global = true
objRE.IgnoreCase = true
[red]'start citering
objRE.Pattern = "\[citat=(.*?)](\w\s)*"
str = objRE.Replace(str,"<br />[citat=$1]")
objRE.Pattern = "\[citat=(.*?)]"
str = objRE.Replace(str,"<blockquote><b>$1</b> skrev:<hr /><span class=""citat"">")
objRE.Pattern = "\[citat\](\w[åäö]*\s[åäö]*)*"
str = objRE.Replace(str,"<blockquote><br /><span class=""cit"">Citat:</span><hr /><span class=""citat"">$1")
objRE.Pattern = "\[/citat\]"
str = objRE.Replace(str,"</span><hr /></blockquote>")
'slut citering[/red]
'start kod
objRE.Pattern = "\[kod\]"
str = objRE.Replace(str,"<blockquote><span class=""kod"">Kod:<hr />")
objRE.Pattern = "\[/kod\]"
str = objRE.Replace(str,"<hr /></span></blockquote>")
'slut kod
objRE.Pattern = "\[(b|/b|i|/i|u|/u)\]"
str = objRE.Replace(str,"<$1>")
[red]
'fixa länkar och e-postadresser
objRE.Pattern = "([url]www.[/url][^ ]*[a-z])|([url]http://[/url][^ ]*[a-z])"
str = objRE.Replace(str,"<a href=""$1$2"" target=""_blank"">$1$2</a>")
[/red]
'buggfixningar
str = Replace(str,"""www","""http://www")
str = Replace(str,"""http://www""","""www""")
str = Replace(str,"<br""","""")
str = Replace(str,"<br</a> />","</a><br />")
str = Replace(str,"</span><hr""","""")
str = Replace(str,"</span><hr</a> />","</a></span><hr />")
str = Replace(str,"<blockquote><span""","""")
str = Replace(str,"<blockquote><span</a>","</a><span")
str = Replace(str,"</b</a>>","</b>")
'slut
[red]objRE.Pattern = "([\w~\-\.]+@[\w~\-\.]+[a-z])"
str = objRE.Replace(str,"<a href=""mailto:$1"">$1</a>")
'slut länkar och e-postadresser[/red]
Set objRE = Nothing
Fcode = str
End Function
%>
Kolla extra mycket på den röda koden, kanske kan hjälpa dig lite grann? En sökning på wF ger en hel del, men ej det man önskar.. :(
PalleMedlem sedan apr. 20003 174 inlägg Nja.. gav inte så mycket tyvärr..
Gjorde istället om javascript-funktionen som printar ut länkarna så att när man
vill använda [ url=länk]länktext så tas inte http :// med i länken.. :)
[red]regExp.Pattern = "((?:mailto\:|(?:news|(?:ht|f)tp(?:s?))\://){1}\S+)"
str = regExp.Replace(str, "<a href=""redir.asp?url=$1"">$1</a>")
regExp.Pattern = "\[url=(.*)\](.*)\[/url\]"
makeOutput = regExp.Replace(str, "<a href=""redir.asp?url=[b]http://[/b]$1"">$2</a>")[/red]
Det är bra Palle. :D
Men kan man nu använda både [url=nått]beskrivning[/url] och skriva vanliga länkar med hjälp av din kod?
Tjohoo, *lägger till denna tråd i min länksamling*.
CalevanMedlem sedan maj 20031 173 inlägg Är det möjligt att få någon som förklarar regExp.Pattern och hur man inplementerar denna kod på sin sida? för det verkar vara precis det jag vill göra...
Function Fix(str)
Set objRE = New regexp
objRE.Global = true
objRE.IgnoreCase = true
regExp.Pattern = "((?:mailto\:|(?:news|(?:ht|f)tp(?:s?))\://){1}\S+)"
str = regExp.Replace(str, "<a href=""redir.asp?url=$1"">$1</a>")
regExp.Pattern = "\[ url=(.*)\](.*)\[/url\]"
makeOutput = regExp.Replace(str, "<a href=""redir.asp?url=http://$1"">$2</a>")
Fix = str
End Function
_UTAN_ mellanslag i sista regExp.Pattern i [ url..
<%
Response.Write Fix("Hej hopp - detta är en länk: [ url=http://www.webforum.hel.nu]klick[/url]")
%>
CalevanMedlem sedan maj 20031 173 inlägg okey, jag är total nybörjare på det här, och jag fick inte det ovan att funka... men jag kanske bara är dum?
PalleMedlem sedan apr. 20003 174 inlägg På vilket sätt fick du inte koden att fungera?
Fick du något felmeddelande?
CalevanMedlem sedan maj 20031 173 inlägg <html>
<%
Function Fix(str)
Set objRE = New regexp
objRE.Global = true
objRE.IgnoreCase = true
regExp.Pattern = "((?:mailto\:|(?:news|(?:ht|f)tp(?:s?))\://){1}\S+)"
str = regExp.Replace(str, "<a href=""redir.asp?url=$1"">$1</a>")
regExp.Pattern = "\[ url=(.*)\](.*)\[/url\]"
makeOutput = regExp.Replace(str, "<a href=""redir.asp?url=http://$1"">$2</a>")
Fix = str
End Function
%>
<head>
<title>Lite text</title>
</head>
<body>
<p>Lite text.</p>
<% Response.Write Fix("Hej hopp - detta är en länk: [url=http://www.webforum.hel.nu]klick[/url]") %>
</body>
</html>
Felmedelande:
Lite text.
Microsoft VBScript runtime error '800a000d'
Type mismatch: '[string: "Hej hopp - detta är "]'
/kommitteer/pyrot/fredrik/index.asp, line 30
PalleMedlem sedan apr. 20003 174 inlägg Aha, när det är ju inte så konstigt ser jag.. är en del fel i koden som m_soderlund postade. ;)
Bifogar här en fungerande kod i TXT-format, detta eftersom wF ändrar en del i koden.
Testa denna istället:
CalevanMedlem sedan maj 20031 173 inlägg Man tackar! det funkar utmärkt, nu ska jag bara försöka få in detta i mitt lilla projekt som jag pysslar med. Och eftersom det är tentavecka nu har jag gott om tid :)
tack!
PalleMedlem sedan apr. 20003 174 inlägg Gutt mos! :bire
Du kan placera funktionen vart du vill på sidan, den behöver inte ligga i samband med
där den ska användas och du kan anropa den på flera ställen i din kod.
Bara att höra av sig igen vettu om du kör fast. :)
CalevanMedlem sedan maj 20031 173 inlägg hmmm, då passar jag på att fråga direkt!
i funktionen står följande rad:
makeOutput = regExp.Replace(str, "<a href=""redir.asp?url=http://$1"">$2</a>")
Nu är det så att jag vill att länken ska gå till en address som är definierad i de två variablerna "path" och "katalog" och sen det som står i url nedan:
[ url=www.webforum.nu]LÄNK
så path innehåller:
http://www.minsida.se/
katalog:
2003/idag/
och i [url= står det
minsida.asp
eftersom jag inte vet vad $1 och $2 betyder i ursprungskoden har jag lite svårt med att modifiera denna...
tack!
PalleMedlem sedan apr. 20003 174 inlägg Om du kollar på det pattern som vi använder:
[red]regExp.Pattern = "\[url=(.*)\](.*)\[/url\]" [/red]
I ett pattern definerar man det man söker efter, i detta fall är det koden [url=XXX]YYY som vi söker efter och vill modifiera.
$1 ger oss värdet från den första grupperingen, XXX i vårt lilla exempel. -------^
$2 ger oss värdet från den andra grupperingen, YYY.
Med Replace ersätter vi sedan $1 med själva URL´n och $2 med det som formar texten i länken..
[red]regExp.Replace(str, "<a href=""[b]$1[/b]"">[b]$2[/b]</a>")[/red]
Hänger du med? ;)
CalevanMedlem sedan maj 20031 173 inlägg ah, ok! då är jag med på den biten. Nu har jag litte fnutt problem. I denna koden:
regExp.Replace(str, "<a href=""$1"">$2</a>")
vill jag få in innehållet i en variabel före $1 och det verkar stört omöjligt för mig med alla dessa fnuttar överallt. något tips?
PalleMedlem sedan apr. 20003 174 inlägg Ok, får vi se om jag förstod vad du menade.. ;)
Så här:
[red]regExp.Replace(str, "<a href=""[blue]"& variabel &"[/blue]$1"">$2</a>")[/red]
CalevanMedlem sedan maj 20031 173 inlägg Denna fnuttdjungel, där var en kombination jag inte provade. Den fungerade utmärkt!
tackar