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
      

UtilFaqSubForm edit

Titel Wie kann ich automatisch Links erstellen?
Autor Strat & perl-community
Bereich FaqCGI
Tags CGI, Links
Topic revision: r3 - 2007-05-25 - 19:04:58 - TinaMueller
 
Bitte die NutzungsBedingungen beachten.
Bei Vorschlägen, Anfragen oder Problemen mit dem PerlCommunityWiki bitten wir um WebBottomBarExample">Rückmeldung.