Avatar billede phpguru1 Nybegynder
08. november 2007 - 10:40 Der er 10 kommentarer og
1 løsning

Erstatte url med [Link], med mellemrum

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

Links der indeholder mellemrum %20 virker imidlertid ikke med løsningen beskrevet i ovenstående spørgsmål. Eksempel:

http://www.solroed-gym.dk/2006-2007/gennemsnitsudregning%20-%20stx.xls

Hvem har en løsning på dette?
Avatar billede nielle Nybegynder
11. november 2007 - 17:58 #1
Sådan?

        static string Test(string strInput)
        {
            string strPattern =
@"
(?<url>
https?://                            # scheme - e.g. http
(?:[\w-]+\.)+[a-z]{2,}              # host - subdomain, domain, tld
(?::\d+)?                            # port
(?:/~?[\w\d%:-]*(?:\.[\w\d%:-]+)*)*  # path
(?:[?&][\w\d%+.-]+=[\w\d%+-]*)*      # query - after the question mark ?
(?:\#[\w\d]+)?                      # fragment - after the hashmark #
)";

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

            strPattern =
@"
(?<!https?://)
(?<url>
www\.                                # host - subdomain
(?:[\w-]+\.)+[a-z]{2,}              # host - domain, tld
(?::\d+)?                            # port
(?:/~?[\w\d%:-]*(?:\.[\w\d%:-]+)*)*  # path
(?:[?&][\w\d%+.-]+=[\w\d%+-]*)*      # query - after the question mark ?
(?:\#[\w\d]+)?                      # fragment - after the hashmark #
)";

            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
12. november 2007 - 07:38 #2
Jo den virker på det link jeg gav dig, men ikke med fx

http://www.gkshanghai.um.dk/da/menu/InfoOmLand/Nyheder/Bilisme+i+Shanghai.htm - her hagges af ved +.

Kan du ikke lave en der bare forsætter til højre uagtet hvilket tegn der står indtil der kommer et mellemrum? Mellemrum må næsten være det eneste tegn der ikke bør opstå i en url. (Og gør det erstattes det af %20)
Avatar billede nielle Nybegynder
12. november 2007 - 13:41 #3
Da det indgår i den del af url'et som kaldes for path'en, er det her at +-tegnet skal tilføjes:

(?:/~?[\w\d%:-]*(?:\.[\w\d%:-]+)*)*  # path
Avatar billede phpguru1 Nybegynder
12. november 2007 - 14:16 #4
Ok - så #path udtrykket skal altså udvides til?
Avatar billede nielle Nybegynder
12. november 2007 - 14:24 #5
Du er ikke selv hjemme i regulære udtryk?

Grunden til at jeg spørger i stedet for bare at svare, er at det jo ville være fedt hvis du selv blev i stand til at tilrette ovenstående løningn i fremtiden eferhånden som nye problemstillinger viser sig. :^)
Avatar billede phpguru1 Nybegynder
12. november 2007 - 14:40 #6
Helt klart ville det være federe hvis jeg kunne selv - men jeg kan bare ikke se hvor +'et skal placeres i #path udtrykket. Måske således:

(?:/~?[\w\d%:-+]*(?:\.[\w\d%:-+]+)*)*  # path
Avatar billede nielle Nybegynder
12. november 2007 - 18:10 #7
Næsten rigtigt. :^)<

Men der er bare det lille kuriosum med '-' tegnet i en "[...]" at det skal placers som det sidste tegn (eller som det første). Ellers får det nemlig en anden betydning. Som f.eks. i "a-z" som betyder "et af tegnene mellem 'a' og 'z', begge inklusiv.".
Avatar billede nielle Nybegynder
19. november 2007 - 17:15 #8
Er du kommet vidre med denne her?
Avatar billede nielle Nybegynder
26. november 2007 - 17:10 #9
??
Avatar billede phpguru1 Nybegynder
27. november 2007 - 10:01 #10
Yeps det er lykkedes for mig at placere +'et korrekt ;-)

Tak for hjælpen - smidder du et svar?
Avatar billede nielle Nybegynder
27. november 2007 - 10:04 #11
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