alex: regulärer Ausdruck gesucht

Hi Leute.

Gegeben ist ein normaler String:

$string="Schaut unter http://www.ihreDomain.de nach";

Jetzt suche ich einen regulären Ausdruck, der mir aus dem eigentlichen "Text"-Link einen gültigen HTML-Link macht,also:

Verarbeiteter String:

$string_neu="Schaut unter <a href='http://www.ihreDomain.de'>http://www.ihreDomain.de</a>";

Hat schon jemand eine Idee?

Danke
Alex

  1. Hoi,

    Gegeben ist ein normaler String:

    $string="Schaut unter http://www.ihreDomain.de nach";

    Jetzt suche ich einen regulären Ausdruck, der mir aus dem
    eigentlichen "Text"-Link einen gültigen HTML-Link macht,also:

    Verarbeiteter String:

    $string_neu="Schaut unter <a href='http://www.ihreDomain.de'>http://www.ihreDomain.de</a>";

    Hat schon jemand eine Idee?

    Eine richtige Loesung dafuer gibt es nicht. Aber man kann sie
    annaehern:

    $string =~ s!(http://|ftp://|mailto:[a-zA-Z0-9._-]+@)*([a-zA-Z0-9.-]+.)?([A-Za-z0-9-]{3,}.)([a-zA-Z0-9-]+.)*([a-z]{2,})(/[a-zA-Z%0-9]*)*(?[a-z%0-9&;+=,]*)?(#.*)?!<a href="$1$2$3$4$5$6$7$8">$1$2$3$4$5$6$7$8</a>!g;

    Der matcht aber keine IP-Adressen. Ansonsten lies mal

    </archiv/2000_3/t21614.htm#a110363>

    zu dem Thema.

    Gruesse,
     c.j.k

    1. Wow

      Das ging ja richtig schnell.

      Machs gut...
      Alex

      1. Hoi,

        Wow

        Das ging ja richtig schnell.

        Wenn du die Archiv-Suche bedient haettest, dann waere das sogar *noch*
        schneller gegangen...

        Gruesse,
         c.j.k

    2. Hallo,

      use strict;
      my $x = "Schaut unter http://www.ihreDomain.de nach dem blabla";
      $x =~ s!^(.*)http://!http://!;
      my $y = $1;
      my $z = $x;
      $x =~ s/\s+.*$//;
      $z =~ s/^\S+//;
      print $y.'<a href="'.$x.'">'.$x.'</a>'.$z;
      __END__

      liefert:
      Schaut unter <a href="http://www.ihreDomain.de">http://www.ihreDomain.de</a> nach dem blabla

      Christians Ansatz (mit "http://|ftp://|mailto:" etc.) ist natürlich allgemeingültiger. Für Deine konkrete Aufgabenstellung macht der obige Code allerdings genau das, was Du brauchtst (und matcht auch IP-Adressen). Und außerdem: eine Anwendung ist erst dann fertig, wenn Sie umfassend getestet wurde ;)

      Ansonsten bin ich mir sicher, daß sich das Ganze auch noch kompakter schreiben läßt. Aber wie sagt Larry immer so schön? TIMTOWTDI.

      @Christian:
      [a-zA-Z%0-9_] == \w

      Grüße
         K@rl

    3. Moin moin!

      Der matcht aber keine IP-Adressen. Ansonsten lies mal
      </archiv/2000_3/t21614.htm#a110363>

      Leider hat der Schwanzabschneider damals noch Quelltexte kaputt gemacht (Pipes rausgefiltert). Daher empfehle ich </archiv/2000_3/t21729.htm#a111398> als ausschliessliches Verweisziel in diesem Zusammenhang. ;-)

      So long

      --
      There are two major products that come out of Berkeley: LSD and UNIX. We don't believe this to be a coincidence.
          -- Jeremy S. Anderson