Mario: "Text zu Link" + nach erstem alleinstehendem Slash "..." setzen

Hallo,

folgendes RegExp

RegExp: /([\w]+://[\w-?&;#~=./@]+[\w/])/i
Ersetz: <a href="$1">$1</a>

macht aus Links in Texten klickbare Links. Wenn die Links jedoch sehr lang sind sieht das Ergebnis nicht gut aus. Darum soll aus

http://www.test.de/leipzig/seite1/user.php&krempelusw_usf_etc

ein

<a href="http://www.test.de/leipzig/user.php&krempelusw_usf_etc">http://www.test.de/...</a>

werden.

D.h. das RegExp soll das Suchmuster noch einmal zerlegen (Und zwar nach dem ersten, alleinstehenden Slash), damit ich:

Ersetz: <a href="$1">$1$2</a>

einsetzen kann.

Kann mir jemand dafür einen Tip geben?

Gruss, Mario

  1. Hi Mario,

    probier's mal so:

    #!/usr/bin/perl

    RegExp: /([\w]+://[\w-?&;#~=./@]+[\w/])/i

    Ersetz: <a href="$1">$1</a>

    $a = "http://www.test.de/leipzig/seite1/user.php&krempelusw_usf_etc";
    if (length($a) > 20) {
       $b=substr($a,0,20)."...";
       $a =~ s/([\w]+://[\w-?&;#~=./@]+[\w/])/<a href="$1">$b</a>/i;
    }
    else {
       $a =~ s/([\w]+://[\w-?&;#~=./@]+[\w/])/<a href="$1">$1</a>/i;
    }
    print "$a\n"

    Mit length() ueberpruefst Du die Laenge des Strings.
    mit substr(string,start,ende) gibst Du einen Teilstring aus.
    Und dieser Teilstring steckt in der Variable $b drin, die dann statt dem langen $a ausgegeben wird.

    Gruß

    Hans

  2. Hell-O!

    D.h. das RegExp soll das Suchmuster noch einmal zerlegen (Und zwar nach dem ersten, alleinstehenden Slash), damit ich <a href="$1">$1$2</a> einsetzen kann.

    Eine zweite Klammer sollte helfen. Alternativ wäre der e-Modifier interessant.

    Siechfred