webForumDet fria alternativet

göra om http:// till länkar men minska länk namnet

ASP

14 svar · 619 visningar · startad av Bosse168

Medlem sedan nov. 20031 018 inlägg
Frågan#1

Använder länk Boogie's göra om http:// till länkar men undrar om det är någon som vet hur jag ska gå tillväga för att minska ner själva namnet på länken (om det har ett låååååångt namn).
Har sett här på Webforum att det blir punkter i mitten av länk namnet och det är ju att föredra eftersom man görna vill se vad det är för sorts sidan man kommer till.

function FormatPost(ByVal strText)
	dim objRegExp
	
	set objRegExp = new RegExp
	
	objRegExp.Global = true
	objRegExp.IgnoreCase = true 'No case sensitive
	
	objRegExp.Pattern = "([url]http://[/url]|[url]https://[/url]|[url]ftp://[/url])(\S)(\S+)"
	strText = objRegExp.Replace(strText, "<a href=""$1$2$3"" target=""_blank"">$2$3</a>")
	
	objRegExp.Pattern = "(mailto:)(\S)(\S+)"
	strText = objRegExp.Replace(strText, "<a href=""$1$2$3"">$2$3</a>")
	
	objRegExp.Pattern = "(img://(\S)(\S+))"
	strText = objRegExp.Replace(strText, "<img src=""http://$2$3"" alt=""http://$2$3"">")
	
	objRegExp.Pattern = "\[url=(.*?)\](.*?)\[/url]"
	strText = objRegExp.Replace(strText, "<a href=""http://$1"" target=""_blank"">$2</a>")
	
	objRegExp.Pattern = "\[mail=(.*?)\](.*?)\[/mail]"
	strText = objRegExp.Replace(strText, "<a href=""mailto:$1"">$2</a>")
	
	set objRegExp = nothing
	
	FormatPost = strText
end function
Medlem sedan nov. 20031 018 inlägg
#2

ingen?

Medlem sedan dec. 1999707 inlägg
#3

Om du kör RegExp.Execute() så får du ut ett Matches-objekt som innehåller flera Match-object:

Set Matches = RegExp.Execute()

Matches(0).Value = innehåller själva träffen.

På så sätt kan du själv sköta ersättningen i strängen och göra om texten inom a-taggen till precis så du vill ha det.

(Hinner inte att skriva mer, måste med tåget... :p )

Medlem sedan nov. 20031 018 inlägg
#4

Förstår inte riktigt hur man ska gå till väga...

P.s. hoppas du hann med tåget :) D.s.

Medlem sedan nov. 20031 018 inlägg
#5

Ingen? :(

Medlem sedan maj 200010 687 inlägg
Medlem sedan maj 200010 687 inlägg
#7

Så här kan du göra:

function FormatPost(ByVal strText)
	dim objRegExp
	
	set objRegExp = new RegExp
	
	objRegExp.Global = true
	objRegExp.IgnoreCase = true 'No case sensitive
	
	objRegExp.Pattern = "([url]http://[/url]|[url]https://[/url]|[url]ftp://[/url])(\S)(\S+)"
	strText = objRegExp.Replace(strText, "<a href=""$1$2$3"" target=""_blank"">$2$3</a>")
	
	objRegExp.Pattern = "(mailto:)(\S)(\S+)"
	strText = objRegExp.Replace(strText, "<a href=""$1$2$3"">$2$3</a>")
	
	objRegExp.Pattern = "(img://(\S)(\S+))"
	strText = objRegExp.Replace(strText, "<img src=""http://$2$3"" alt=""http://$2$3"">")
	
	objRegExp.Pattern = "\(.*?)\"
	strText = objRegExp.Replace(strText, "<a href=""http://$1"" target=""_blank"">$2</a>")
	
	objRegExp.Pattern = "\[mail=(.*?)\](.*?)\[/mail]"
	strText = objRegExp.Replace(strText, "<a href=""mailto:$1"">$2</a>")
	
	[b]objRegExp.Pattern = "(<a [^>]+>)([\s\S]{35}?)([\s\S]+?)([\s\S]{15}?)(</a>)"
	strText = objRegExp.Replace(strText, "$1$2...$4$5")[/b]
	
	set objRegExp = nothing
	
	FormatPost = strText
end function

35 är antalet tecken innan ... och 15 antalet efter. Går så klart att ändra efter egna behov.

Medlem sedan maj 200010 687 inlägg
#8

wF la visst in mellanslag mellan > och ). Ta bort dem.

Medlem sedan nov. 20031 018 inlägg
#9

Får detta fel meddelande:

Microsoft VBScript runtime error '800a1399'

Syntax error in regular expression

/check.asp, line 49

Rad 49

strText = objRegExp.Replace(strText, "<a href=""http://$1"" target=""_blank"">$2</a>")
Medlem sedan maj 200010 687 inlägg
#10

Den koden är den som var med från början. Den lägger jag mig inte i. :p
Men när jag kollar på koden så verkar patternet se mycket underligt och jag förstår inte vad det är till för.

Medlem sedan dec. 20003 887 inlägg
#11

Det mönstret är knäppt. Det tar all text inom paranteser och gör om det till en länk?

Det verkar vara meningslöst. Ta helt enkelt bort dom två raderna eller åtminstonde kommentera ut dom.

Medlem sedan nov. 20031 018 inlägg
#12

Hittade felet WF tog bort en bit av koden.

objRegExp.Pattern = "\[ url =(.*?)\](.*?)\[/ url ]"
Fast hakarna ihop med url.
(se bifogad fil).

Medlem sedan nov. 20031 018 inlägg
#13
	objRegExp.Pattern = "(<a [^>]+> )([\s\S]{35}?)([\s\S]+?)([\s\S]{15}?)(</A> )"
	strText = objRegExp.Replace(strText, "$1$2...$4$5")

Hjälpte inte visar fortfarande hela länken

Medlem sedan maj 200010 687 inlägg
#14

Och du har tagit bort mellanslagen?
Och länknamnet är längre än 40 tecken..?

Medlem sedan nov. 20031 018 inlägg
#15

yepp och länken är längre än 40 tecken.

266 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)