Public Shared Function makelink(ByVal y As String) As String
Dim mDelimit As String
Dim re As Regex
mDelimit = Chr(0)
re = New Regex("(\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+)", RegexOptions.IgnoreCase)
y = re.Replace(y, "<a href=""mailto" & mDelimit & ":$1"">$1</a>")
re = New Regex("([url]http://[/url]|[url]https://[/url]|[url]ftp://[/url]|mailto:)(\S)(\S+)", RegexOptions.IgnoreCase)
y = re.Replace(y, "<a href=""$1$2" & mDelimit & "$3"" target=""_blank"">$2" & mDelimit & "$3</a>")
re = New Regex("(www\.(\S)(\S+))", RegexOptions.IgnoreCase)
y = re.Replace(y, "<a href=""http://$1"" target=""_blank"">$1</a>")
makelink = Replace(y, mDelimit, "")
End Function
någon som har lust att förklara lite ungefär hur den här funktionen fungerar? hur använder man alla $1 och $2 osv och när ska man använda [A-Za-z0-9] istället för (\S) osv... försöker bygga en egen funktion och utgår ifrån den här. Försökte kolla lite på msdn om man kan hitta nån lista om vad alla / och \ och * används till men hittar inget. Någon som vet och har lust att förklara lite? :)
jippie. vad kul satt och skrev ett inlägg här och råkade stänga rutan på nåt sätt så nu måste jag skriva om allt.
jag löste problemet genom att testa mig fram lite men undrar nu hur jag ska kunna tillämpa en funktion i den funktionen.
om jag skrever [user]greggan[/user] vill jag att det blir länken <a href="userprofile.aspx?userid=1">greggan</a>
jag har skapat en funktion som läser av användarnamnet och gör om det till användarid. Men jag kan inte tillämpa den funktionen i den här funktionen. funktionen($2) vill jag göra.
function nicktoid(txt)
dim cn as new oledbconnection("PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=E:\Inetpub\Databaser\tihi.mdb;")
dim cmd as new oledbcommand("select * from users where nickname='" & txt & "'" ,cn)
dim dr as oledbdatareader
dim userid as integer
cn.open()
dr = cmd.ExecuteReader()
dr.read()
userid = dr("userid")
dr.close()
cn.close()
txt = userid
nicktoid = txt
end function
sen har jag den här funktionen
Public Shared Function makelink(ByVal y As String) As String
Dim mDelimit As String
Dim re As Regex
mDelimit = Chr(0)
re = New Regex("(\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+)", RegexOptions.IgnoreCase)
y = re.Replace(y, "<a href=""mailto" & mDelimit & ":$1"">$1</a>")
re = New Regex("([url]http://[/url]|[url]https://[/url]|[url]ftp://[/url]|mailto:)(\S)(\S+)", RegexOptions.IgnoreCase)
y = re.Replace(y, "<a href=""$1$2" & mDelimit & "$3"" target=""_blank"">$2" & mDelimit & "$3</a>")
re = New Regex("(www\.(\S)(\S+))", RegexOptions.IgnoreCase)
y = re.Replace(y, "<a href=""http://$1"" target=""_blank"">$1</a>")
re = New Regex("(\[user\])((\S)(\S+))(\[\/user\])", RegexOptions.IgnoreCase)
y = re.Replace(y, "<a href=""userprofile.aspx?userid=$2"" target=""_blank"">$2</a>")
makelink = Replace(y, mDelimit, "")
End Function
om jag nu skriver [user]greggan[/user] får jag fram att länken blir userid=greggan istället för 1... hur ska jag kunna tillämpa min funktion på $2?? :q
Det enklaste och effektivaste alternativet är väl egentligen att ha en lookupsida som tar emot ett användarnamn i stället (typ lookup.aspx?name=greggan). Om den kan hitta det i databasen, omdirigera till rätt profilsida (typ luserprofile.aspx?id=1), annars visa ett felmeddelande. Något trevligt sätt att göra det på i regexparna finns desvärre inte...
hmm.. det där var ju en jävligt bra idé.. ska testa direkt.. men jag kom på en till liten sak. Kan man lösa så att [user]-grejjen bara fungerar på namn som finns i databasen? eller är det typ för avancerat?
hmm.. det där var ju en jävligt bra idé.. ska testa direkt.. men jag kom på en till liten sak. Kan man lösa så att [user]-grejjen bara fungerar på namn som finns i databasen? eller är det typ för avancerat?
Du kan ju använda regexparna för att få fram alla förekomster av [user]någonting[/user] när inlägget postas, och sedan loopa igenom alla dessa förekomster, kolla om namnen finns och sedan utifrån detta bestämma dig för om du ska skälla ut användaren som skrivit eller ej. Eller så kan du strunta i det ;)
jag löste det genom att om man skriver [user]nånsomintefinns[/user] så bllir det en länk också men när man klickar på den så fixar redirectsidan och kollar om användaren finns eller inte.. så antingen blir man redirectad till användarens profil om användaren finnns eller så blir man ridirectad till en sida där det står att användaren saknas... *tihi*
Kan tipsa om programmet The Regulator som man skriver RegExp-uttryck i. Där kan skriva och testa uttryck som man vill göra, söka efter användbara uttryck som andra lagt upp på nätet samt ladda upp egna som man skrivit.