Wie finde ich URIs in einem Text?

Inhalt:

Für diese Aufgabe gibt es mehrere Lösungen: Man benutzt einen Regulären Ausdruck - aber das wird durch die Komplexität von URIs relativ schwierig (Subdomains, verschiedene Protokolle,...), oder man verwendet ein Modul. Die Lösungen mit Modulen sind die saubersten und auch sicher, dass man (fast) alle findet. Die Module sind vielfach getestet!

Lösung 1: URI::Find

Skript:
#!/usr/bin/perl

use strict;
use warnings;

use URI::Find;

my $string = q~Dies ist ein http://test.de Test
und noch eine http://perlseiten.renee-baecker.de URL. Da dies
ein laengerer Text ist, sind auch noch welche
zu finden: http://board.perl-community.de und
http://wiki.perl-community.de/bin/view/Wissensbasis/PerlFaq Zeilenumbruch
ftp://test.de Zwischentext gopher://test.de
~;

my @urls;
my $finder = URI::Find->new(
sub{
        my ($uri,$text) = @_;
        push(@urls,$uri);
        return $uri;
});

$finder->find(\$string);

print $_,"\n" for(@urls);

Ausgabe:
C:\community>uri_find.pl
http://test.de/
http://perlseiten.renee-baecker.de/
http://board.perl-community.de/
http://wiki.perl-community.de/bin/view/Wissensbasis/PerlFaq
ftp://test.de
gopher://test.de

Mehr dazu in der Doku zu URI::Find.

Ergänzungen, Kommentare

TinaMueller - 14 Jul 2003 - FAQ schon vorhanden

...unter StringsWieFindeIchEineURLInEinemTextabschnitt

Kommentare werden am besten in folgender Form vorgenommen, damit sie im Inhaltsverzeichnis angezeigt werden (natürlich ohne das <verbatim>):
---+++ Main.??? - 14 Jul 2003 - Betreff

UtilFaqSubForm edit

Titel Wie finde ich URIs in einem Text?
Autor ReneeBaecker
Bereich FaqFindInText
Topic revision: r2 - 2007-01-23 - 15:15:00 - TinaMueller
 
Bitte die NutzungsBedingungen beachten.
Bei Vorschlägen, Anfragen oder Problemen mit dem PerlCommunityWiki bitten wir um WebBottomBarExample">Rückmeldung.