Avatar billede musicchart.dk Nybegynder
02. august 2007 - 14:08 Der er 5 kommentarer og
1 løsning

URL skal erstattes med [Link]

Hey, jeg bruger flg. til at erstatte links i en streng, så fx: www.eksperten.dk bliver til:
<a href="http://www.eksperten.dk">[Link]</a>

Det virker også fint nok, problemet er når der kommer flere værdier med i en QueryString, fx:
www.eksperten.dk/Default.aspx?id=4&member=3 bliver til:
<a href="http://www.eksperten.dk/Default.aspx?id=4&">[Link]</a> member=3


string strPattern = @"(?<url>http://(?:[\w-]+\.)+[\w-]+(?:/[\w-./?%&~=]+[\W-]*[^.])?)";

string strReplace = "<a href=\"${url}\" target=_blank>[Link]</a>";
string strInput = thetext;
string strResult;
strResult = Regex.Replace(strInput, strPattern, strReplace);

strPattern = @"(?<!http://)(?<url>www\.(?:[\w-]+\.)+[\w-]+(?:/[\w-./?%&~=]+[\W-]*[^.])?)";
strReplace = "<a href=\"http://${url}\" target=_blank>[Link]</a>";
strResult = Regex.Replace(strResult, strPattern, strReplace);
Avatar billede nielle Nybegynder
02. august 2007 - 21:17 #1
Noget i denne stil?

static string Test(string strInput)
{
    string strPattern =
@"
(?<url>
https?:
//
(?:[\w-]+\.)+[\w-]+
(?::\d+)?
(?:/[\w\d]+(.[\w\d]+)?)*
(?:\#[\w\d]+)?
(?:[?&][\w\d%+]+=[\w\d%+]*)*
)";
    string strReplace = "<a href=\"${url}\" target=_blank>[Link]</a>";
    string strResult = Regex.Replace(strInput, strPattern, strReplace, RegexOptions.IgnorePatternWhitespace);

    strPattern =
@"
(?<!https?://)
(?<url>www\.
(?:[\w-]+\.)+[\w-]+
(?::\d+)?
(?:/[\w\d]+(.[\w\d]+)?)*
(?:\#[\w\d]+)?
(?:[?&][\w\d%+]+=[\w\d%+]*)*
)";
    strReplace = "<a href=\"http://${url}\" target=_blank>[Link]</a>";
    strResult = Regex.Replace(strResult, strPattern, strReplace, RegexOptions.IgnorePatternWhitespace);

    Console.WriteLine(strResult);
    return strResult;
}
Avatar billede musicchart.dk Nybegynder
02. august 2007 - 22:25 #2
Hej nielle,

tæt på, tæt på:

www.eksperten.dk (virker)
www.eksperten.dk/test.aspx?id=4&cid=4&bid=5 (virker)
www.eksperten.dk/test/test.aspx?id=4&cid=4&bid=5 (virker ikke)

... den sidste bliver til:
<a href="http://www.eksperten.dk/test/test">[Link]</a> .aspx?id=4&cid=4&bid=5
Avatar billede nielle Nybegynder
03. august 2007 - 07:07 #3
En dum almindelig regex-fejl - havde glemt at excape et .-tegn.

Sådan:

static string Test(string strInput)
{
    string strPattern =
@"
(?<url>
https?://
(?:[\w-]+\.)+[\w-]+
(?::\d+)?
(?:/[\w\d]+(\.[\w\d]+)?)*
(?:\#[\w\d]+)?
(?:[?&][\w\d%+]+=[\w\d%+]*)*
)";
    string strReplace = "<a href=\"${url}\" target=_blank>[Link]</a>";
    string strResult = Regex.Replace(strInput, strPattern, strReplace, RegexOptions.IgnorePatternWhitespace);

    strPattern =
@"
(?<!https?://)
(?<url>
www\.
(?:[\w-]+\.)+[\w-]+
(?::\d+)?
(?:/[\w\d]+(\.[\w\d]+)?)*
(?:\#[\w\d]+)?
(?:[?&][\w\d%+]+=[\w\d%+]*)*
)";
    strReplace = "<a href=\"http://${url}\" target=_blank>[Link]</a>";
    strResult = Regex.Replace(strResult, strPattern, strReplace, RegexOptions.IgnorePatternWhitespace);

    Console.WriteLine(strResult);
    return strResult;
}
Avatar billede musicchart.dk Nybegynder
03. august 2007 - 09:37 #4
Perfekt! Tak for hjælpen.

Laver du et svar, så lukker jeg.
Avatar billede nielle Nybegynder
03. august 2007 - 10:12 #5
Svar :^)
Avatar billede phpguru1 Nybegynder
07. august 2007 - 11:19 #6
Se også:

http://www.eksperten.dk/spm/790585

Vi er ikke helt færdige ;-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester