Avatar billede phpguru1 Nybegynder
07. august 2007 - 11:17 Der er 16 kommentarer og
1 løsning

Erstatte url med [Link]

Jvf.

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

Det udledte pattern kan ikke håndtere links hvor der indgår tegnet: ~

Dette dur ej heller:

http://web.archive.org/web/20000303054230/http://dr.dk/

Ydermere er der lidt problemer med links der ender på /, dvs. et som:

http://www.dr.dk/ hvor blot http://www.dr.dk bliver erstattet med [Link] og / bliver tilbage.
Avatar billede nielle Nybegynder
07. august 2007 - 11:21 #1
Må jeg lige spørge hvor det er du vil have ~-tegn henne i dit URL? Det er ikke et helt normalt tegn at have.
Avatar billede nielle Nybegynder
07. august 2007 - 11:25 #2
I øvrigt er http://web.archive.org/web/20000303054230/http://dr.dk/ ikke er lovligt URL. Hvad ønsker du at der skal ske med dette?
Avatar billede jensgram Nybegynder
08. august 2007 - 10:33 #3
nielle > http://www.daimi.au.dk/~u041039/ - er det ikke en valid URL?
Avatar billede nielle Nybegynder
08. august 2007 - 11:11 #4
Jo da, men det er ikke så tit man støder på den.

> phpguru1, er det der den skal have lov til at være, eller er det også andre steder i URL'et?
Avatar billede jensgram Nybegynder
08. august 2007 - 11:14 #5
nielle > Ah, ok :)
Avatar billede nielle Nybegynder
08. august 2007 - 11:20 #6
Mit foreløbige bud ser sådan ud:

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;
}

men det er stadig ikke klart hvad der skal ske med http://web.archive.org/web/20000303054230/http://dr.dk/
Avatar billede phpguru1 Nybegynder
09. august 2007 - 09:31 #7
Et link som: http://web.archive.org/web/20000303054230/http://dr.dk/
Skal også være et link (på samme måde som Eksperten.dk automatisk laver den til et link)

Disse links bliver heller ikke omformet:

http://www.dr.dk/?id=23, men http://www.dr.dk/index.php?id=23 gør
Avatar billede phpguru1 Nybegynder
09. august 2007 - 09:33 #8
Links med ~ fungerer nu korrekt !
Avatar billede nielle Nybegynder
09. august 2007 - 09:35 #9
Hvorfor skal http://web.archive.org/web/20000303054230/http://dr.dk/ være et link? Det er jo ikke et lovligt URL.
Avatar billede phpguru1 Nybegynder
09. august 2007 - 20:39 #10
Ikke desto mindre viser linket en ganske gyldig hjemmeside ...
Avatar billede nielle Nybegynder
09. august 2007 - 21:18 #11
Ja, det må jeg jo indrømme. Værsgod:

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;
}

Jeg frygter nu lidt at, hvis det fortsætter på den måde, ender alt med at være et lovligt url. ;^)
Avatar billede phpguru1 Nybegynder
11. august 2007 - 14:00 #12
Avatar billede nielle Nybegynder
11. august 2007 - 17:59 #13
Værsgod:

        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 phpguru1 Nybegynder
14. august 2007 - 10:56 #14
Jojo, vi nærmer os virkelig nu ;-)

Sådan en dimmer her giver dog problemer:

http://peecee.dk/uploads/0607/2.gradslignings-faktorisering_bevis.doc

Det er vist: - (bindestreg) der er problemet ...
Avatar billede nielle Nybegynder
14. august 2007 - 11:14 #15
Værsgod:

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 phpguru1 Nybegynder
14. august 2007 - 13:06 #16
Stik mig et svar og så får du lidt point ;-)!
Avatar billede nielle Nybegynder
14. august 2007 - 13:07 #17
Svar :^)
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
Kategori
Kurser inden for grundlæggende programmering

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