regulärer Ausdruck gesucht
alex
- cgi
0 Christian Kruse
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
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
Wow
Das ging ja richtig schnell.
Machs gut...
Alex
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
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
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