webForumDet fria alternativet

url function

19 svar · 340 visningar · startad av aleborg

aleborgMedlem sedan jan. 20013 341 inlägg
#1

Har ett script som ser ut så här:

<script language="javascript1.2" runat=server>
function edit_hrefs(s_html){
// use regular expressions to look for 
// e_mail addresses and urls
s_str = new String(s_html);

s_str = s_str.replace(/\bhttp\:\/\/www(\.[\w+\.\:\/\_]+)/gi, 
"http\:\/\/¬¤¸$1");

s_str = s_str.replace(/\b(http\:\/\/\w+\.[\w+\.\:\/\_]+)/gi,
"<a href=\"$1\" target='_blank'>$1<\/a>");

s_str = s_str.replace(/\b(www\.[\w+\.\:\/\_]+)/gi, 
"<a href=\"http://$1\" target='_blank'>$1</a>");

s_str = s_str.replace(/\bhttp\:\/\/¬¤¸(\.[\w+\.\:\/\_]+)/gi,
"<a href=\"http\:\/\/www$1\" target='_blank'>http\:\/\/www$1</a>");

s_str = s_str.replace(/([\w\.]+@[\w+\.?]*)/gi, 
"<a href=\"mailto\:$1\" target='_blank'>$1</a>");

return s_str;
}
</script>

men om en url innehåller flera _ så bryts länken och om länken innehåller - så bryts den också! hur ska scriptet se ut?

JojoxxMedlem sedan juni 20004 308 inlägg
#2

Prova så här;

function edit_hrefs(s_html){
// use regular expressions to look for 
// e_mail addresses and urls
s_str = new String(s_html);

s_str = s_str.replace(/\bhttp\:\/\/www(\.[\w+\.\:\/\_]+)/gi, 
"http\:\/\/¬¤¸$1");

s_str = s_str.replace(/\b(http\:\/\/\w+\.[\w+\.\:\/\_]+)/gi,
"<a href=\"$1\" target='_blank'>$1<\/a>");

s_str = s_str.replace(/\b(www\.[\w+\.\:\/\_]+)/gi, 
"<a href=\"http://$1\" target='_blank'>$1</a>");

s_str = s_str.replace(/\bhttp\:\/\/¬¤¸(\.[\S+\.\:\/\_]+)/gi,
"<a href=\"http\:\/\/www$1\" target='_blank'>http\:\/\/www$1</a>");

s_str = s_str.replace(/([\w\.]+@[\w+\.?]*)/gi, 
"<a href=\"mailto\:$1\" target='_blank'>$1</a>");

return s_str;
}
aleborgMedlem sedan jan. 20013 341 inlägg
#3

den klipper vid första -

JojoxxMedlem sedan juni 20004 308 inlägg
#4

Ahh... jag testade bara med en http-länk. Prova detta;

function edit_hrefs(s_html){
// use regular expressions to look for 
// e_mail addresses and urls
s_str = new String(s_html);

s_str = s_str.replace(/\bhttp\:\/\/www(\.[\w+\.\:\/\_]+)/gi, 
"http\:\/\/¬¤¸$1");

s_str = s_str.replace(/\b(http\:\/\/\w+\.[\w+\.\:\/\_]+)/gi,
"<a href=\"$1\" target='_blank'>$1<\/a>");

s_str = s_str.replace(/\b(www\.[\w+\.\:\/\_]+)/gi, 
"<a href=\"http://$1\" target='_blank'>$1</a>");

s_str = s_str.replace(/\bhttp\:\/\/¬¤¸(\.[\S+\.\:\/\_]+)/gi,
"<a href=\"http\:\/\/www$1\" target='_blank'>http\:\/\/www$1</a>");

s_str = s_str.replace(/([\S\.]+@[\S+\.?]*)/gi, 
"<a href=\"mailto\:$1\" target='_blank'>$1</a>");

return s_str;
}
aleborgMedlem sedan jan. 20013 341 inlägg
#5

nix den klipper fortfarande på - på http länkar
http://www.spelar.nu/contact.htm

easMedlem sedan sep. 2001269 inlägg
#6

En liten instcksfråga:
Vad menas med runat=server? Hur funkar det?

JojoxxMedlem sedan juni 20004 308 inlägg
#7

Precis som det antyder är det ett scriptblock som skall köras på servern. Du kan alltså skriva en ASP-sida där du normalt använder vbscript, men sedan kanske du vill utnyttja en funktion du har skrivit i JavaScript, vilket du kan göra på detta vis. Själva script-blocket kommer sedan (precis som resterande ASP-kod) att plockas bort från det data (resten av sidan) som skickas till användaren och bara ev. output från scriptet blir kvar. Försöker du däremot använda det på en vanlig html-sida som inte server-parse'as kommer koden att följa med till användaren.

easMedlem sedan sep. 2001269 inlägg
#8

Wao!
Jag trodde JavaScript bara gick att köra client-side.

aleborgMedlem sedan jan. 20013 341 inlägg
#9

Någon som vet svaret på min fråga?

JojoxxMedlem sedan juni 20004 308 inlägg
#10

Sorry, missade ditt inlägg emellan. Missade även att prova med bara www istället för http://www.

function edit_hrefs(s_html){
// use regular expressions to look for 
// e_mail addresses and urls
s_str = new String(s_html);

s_str = s_str.replace(/\bhttp\:\/\/www(\.[\w+\.\:\/\_]+)/gi, 
"http\:\/\/¬¤¸$1");

s_str = s_str.replace(/\b(http\:\/\/\w+\.[\w+\.\:\/\_]+)/gi,
"<a href=\"$1\" target='_blank'>$1<\/a>");

s_str = s_str.replace(/\b(www\.[\S+\.\:\/\_]+)/gi, 
"<a href=\"http://$1\" target='_blank'>$1</a>");

s_str = s_str.replace(/\bhttp\:\/\/¬¤¸(\.[\S+\.\:\/\_]+)/gi,
"<a href=\"http\:\/\/www$1\" target='_blank'>http\:\/\/www$1</a>");

s_str = s_str.replace(/([\S\.]+@[\S+\.?]*)/gi, 
"<a href=\"mailto\:$1\" target='_blank'>$1</a>");

return s_str;
}

Exempel

aleborgMedlem sedan jan. 20013 341 inlägg
#11

hmm, det funkar inte hos mig :(
http://www.spelar.nu/contact.htm

JojoxxMedlem sedan juni 20004 308 inlägg
#12

Scriptet är hårdstyrt till www, inte ww.

Detta blir inte vackert, men det bjuder vi på. Orkar inte slita mer än nödvändigt :)

function edit_hrefs(s_html){
// use regular expressions to look for 
// e_mail addresses and urls
s_str = new String(s_html);

if(s_str.toLowerCase().substring(0,7)!="http://"){
s_str = s_str.replace(/\bhttp\:\/\/(\.[\w+\.\:\/\_]+)/gi, 
"http\:\/\/¬¤¸$1");
}

s_str = s_str.replace(/\b(http\:\/\/\S+\.[\w+\.\:\/\_]+)/gi,
"<a href=\"$1\" target='_blank'>$1<\/a>");

if(s_str.substring(0,2)!="<a"){
s_str = s_str.replace(/\b(www\.[\S+\.\:\/\_]+)/gi, 
"<a href=\"http://$1\" target='_blank'>$1</a>");
}

s_str = s_str.replace(/\bhttp\:\/\/¬¤¸(\.[\S+\.\:\/\_]+)/gi,
"<a href=\"http\:\/\/www$1\" target='_blank'>http\:\/\/www$1</a>");

s_str = s_str.replace(/([\S\.]+@[\S+\.?]*)/gi, 
"<a href=\"mailto\:$1\" target='_blank'>$1</a>");

return s_str;
}
aleborgMedlem sedan jan. 20013 341 inlägg
#13

Tack Jojoxx men det tidigare funkade, missade att jag hade skrivit ww istället för www :r :r :r

Jesper TMedlem sedan nov. 20017 144 inlägg
#14

hur lägger man in denna funktion i ett textstycke då?

NickemannenMedlem sedan aug. 20003 575 inlägg
#15

Response.Write edit_hrefs(strTextStycke)

Jesper TMedlem sedan nov. 20017 144 inlägg
#16

Ööööhhhh... Är inte detta ett javascript?

NickemannenMedlem sedan aug. 20003 575 inlägg
#17

den första koden ja.

inte den sista ;)

NickemannenMedlem sedan aug. 20003 575 inlägg
#18

eller jo det är det ja.... arghh såhär gör du då

<Script language="javascript1.2">
function edit_hrefs(s_html){
// use regular expressions to look for
// e_mail addresses and urls
s_str = new String(s_html);

if(s_str.toLowerCase().substring(0,7)!="http://"){
s_str = s_str.replace(/\bhttp\:\/\/(\.[\w+\.\:\/\_]+)/gi,
"http\:\/\/¬¤¸$1");
}

s_str = s_str.replace(/\b(http\:\/\/\S+\.[\w+\.\:\/\_]+)/gi,
"<a href=\"$1\" target='_blank'>$1<\/a>");

if(s_str.substring(0,2)!="<a"){
s_str = s_str.replace(/\b(www\.[\S+\.\:\/\_]+)/gi,
"<a href=\"http://$1\" target='_blank'>$1</a>");
}

s_str = s_str.replace(/\bhttp\:\/\/¬¤¸(\.[\S+\.\:\/\_]+)/gi,
"<a href=\"http\:\/\/www$1\" target='_blank'>http\:\/\/www$1</a>");

s_str = s_str.replace(/([\S\.]+@[\S+\.?]*)/gi,
"<a href=\"mailto\:$1\" target='_blank'>$1</a>");

return s_str;
}

var strTextStycke = "Text blabla blabakbkabkabkkjfsdfjk";
document.write(edit_hrefs(strTextStycke));
</Script>

kanske vet ej är inte så haj på javascript

Jesper TMedlem sedan nov. 20017 144 inlägg
#19

Detta funkade utmärkt: Response.Write edit_hrefs(strTextStycke)

Tack, då slapp jag strula med asp-regexp osv. Det funkar perfa!!!

Jesper TMedlem sedan nov. 20017 144 inlägg
#20

Jag kör med run at server också så slipper scriptet stå med i html-koden = smart

140 ms totalt · 3 externa anrop · v20260731065814-full.86db40fa
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)