Wie kann ich automatisch Links erstellen?
(
Autor: Strat& perl-community)
Ich habe einen String, und möchte darin alle URIs (z.B. www.perl.de,
http://www.fabiani.net/,
mailto:president@whitehouse.example.com.gov,
ftp://www.suse.de/pub/ durch endsprechende
Links ersetzen.
sub ReplaceUrlsWithLinks {
my $string = shift;
string = shift;
URI::Find::find_uris($string, sub {
my ($uri, $text) = @_;
return qq{\0<a href="\0$uri\0" target="_blank">\0$text\0</a>\0};
});
$string =~ s/\G(.*?)(?:\000(.*?)\000)?/$1.(defined $2 ? $2 : "")/eig;
$string =~ s/\000//g;
return $string;<br>
} # ReplaceUrlsWithLinks<br>
Erklärung:
Diese Funktion verwendet das Modul URI::Find, um URIs erkennen zu können,
und ersetzt sie dann durch Links, die sich in einem neuen Fenster öffnen,
wenn man sie anklickt (target="_blank").
Beispiel:
#! /usr/bin/perl
use warnings;
use strict;
use URI::Find;
use CGI qw(:standard escapeHTML);
my $string = qq~
http://www.fabiani.net/cgi-bin/gb.cgi
testnachricht oder www.fabiani.net
martin\@fabiani.net
ftp://ftp.fabiani.net
ftp.fabiani.net
mail.intertivity.com
https://wwws.txt.dasd.de
~;
print GetUrls($string);
Falls das Modul URI::Find nicht auf dem Webserver installiert ist, dann
den Provider bitten, es zu machen. Falls dies erfolglos sein sollte, kann
man es sich notfalls auch selbst in seinem cgi-bin-Verzeichnis kopieren
(in das Verzeichnis cgi-bin/URI/ ).
Ergänzungen, Kommentare
Kommentare werden am besten in folgender Form vorgenommen, damit
sie im Inhaltsverzeichnis angezeigt werden:
---### Main.??? - 14 Jul 2003 - Betreff