Leser: 17
http://www.example.org/login_index.php?email=info\@test.example
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
#!/usr/bin/perl -W use strict; use warnings; use diagnostics; my $testtext = <<TEXTPLAIN; Dies ist ein kleiner Test zur Erkennung von Hyperlinks test.de oder www.test.de oder http://www.test.de oder https://www.testhttps.de oder (http://test.de/slash/pfad) oder info\@test.example Und hier ein Gemeinschaftstest: http://www.test.de/login_index.php?email=info\@test.example mal schauen... TEXTPLAIN identifylinks (\$testtext,'<a href="%s" target="_blank">%s</a>','<a href="mailto:%s">%s</a>'); print "<pre>$testtext</pre>"; #--------# sub identifylinks { # # Erkennt und markiert Hyperlinks in einem Text # # Aufruf: # ======= # my $testtext = 'test: http://www.test.de'; # identifylinks (\$testtext,'<a href="%s" target="_blank">%s</a>','<a href="mailto:%s">%s</a>'); # print $testtext; # my $text = $_[0]; my $link = $_[1]; my $email_link = (defined $_[2] ? $_[2] : ''); my $modul = 1; eval "use URI::Find; 1;" or $modul = 0; if ($modul) { my $finder = URI::Find -> new ( sub { return sprintf ($link,@_); } ); $finder -> find ($text); } if ($email_link ne '') { # E-Mail auch erwünscht? eval "use Email::Find; 1;" or $modul = 0; if ($modul) { my $finder = Email::Find -> new ( sub { return sprintf ($email_link,$_[0] -> format,$_[1]); } ); $finder -> find ($text); } } } #--------#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
#--------# sub identifylinks { # # Erkennt und markiert Hyperlinks in einem Text # # Aufruf: # ======= # my $testtext = 'test: http://www.test.de'; # identifylinks (\$testtext,'<a href="%s" target="_blank">%s</a>','<a href="mailto:%s">%s</a>'); # print $testtext; # my $text = $_[0]; my $link = $_[1]; my $email_link = (defined $_[2] ? $_[2] : ''); my %found; my $modul = 1; eval "use URI::Find; 1;" or $modul = 0; if ($modul) { my $finder = URI::Find -> new ( sub { $found{$_[0]}++; $found{$_[1]}++; return sprintf ($link,@_); } ); $finder -> find ($text); } if ($email_link ne '') { # E-Mail auch erwünscht? eval "use Email::Find; 1;" or $modul = 0; if ($modul) { my $finder = Email::Find -> new (sub { return $_[1] if($found{$_[0]->format}); return $_[1] if($found{'http:'.$_[0]->format}); return $_[1] if($found{$_[1]}); return $_[1] if($found{'http:'.$_[1]}); return sprintf ($email_link,$_[0]->format,$_[1]); } ); $finder -> find ($text); } } } #--------#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
#--------# sub identifylinks { # # Erkennt und markiert Hyperlinks in einem Text # # Aufruf: # ======= # my $testtext = 'test: http://www.test.de'; # identifylinks (\$testtext,'<a href="%s" target="_blank">%s</a>','<a href="mailto:%s">%s</a>'); # print $testtext; # my $text = $_[0]; my $link = $_[1]; my $email_link = (defined $_[2] ? $_[2] : ''); my $modul = 1; eval "use URI::Find; 1;" or $modul = 0; if ($modul) { my $finder = URI::Find -> new ( sub { $_[0]=~s/\@/\0---at---\0/g; $_[0]=~s/\@/\0---at---\0/g; return sprintf ($link,@_); } ); $finder -> find ($text); } if ($email_link ne '') { # E-Mail auch erwünscht? eval "use Email::Find; 1;" or $modul = 0; if ($modul) { my $finder = Email::Find -> new ( sub { return sprintf ($email_link,$_[0]->format,$_[1]); } ); $finder -> find ($text); } } $$text=~s/\0---at---\0/\@/g; } #--------#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
#--------# sub identifylinks { # # Erkennt und markiert Hyperlinks in einem Text # # Aufruf: # ======= # my $testtext = 'test: http://www.test.de'; # identifylinks (\$testtext,'<a href="%s" target="_blank">%s</a>','<a href="mailto:%s">%s</a>'); # print $testtext; # my $text = $_[0]; my $link = $_[1]; my $email_link = (defined $_[2] ? $_[2] : ''); if(eval "use URI::Find; 1;") { my $finder = URI::Find -> new ( sub { return sprintf ($link,@_); } ); my $call=sub{ return $_[0]; }; if($email_link ne '' && eval "use Email::Find; 1;" ) # E-Mail auch erwünscht? { my $finder = Email::Find -> new ( sub { return sprintf ($email_link,$_[0]->format,$_[1]); } ); $call=sub { my $text=shift; $finder -> find (\$text); return $text; }; } $finder -> find ($text, $call); } } #--------#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
#!/usr/bin/perl -W use strict; use warnings; use diagnostics; use Data::Dumper; my $testtext = <<TEXTPLAIN; Dies ist ein kleiner Test zur Erkennung von Hyperlinks test.de oder www.test.de oder http://www.test.de oder https://www.testhttps.de test Platzhalter ||2|||||||||||| oder (http://test.de/slash/pfad) oder info\@test.example Und hier ein Gemeinschaftstest: http://www.test.de/login_index.php?email=info\@test.example mal schauen... TEXTPLAIN identifylinks (\$testtext,'<a href="%s" target="_blank">%s</a>','<a href="mailto:%s">%s</a>'); print "<pre>$testtext</pre>"; identifylinks_topeg (\$testtext,'<a href="%s" target="_blank">%s</a>','<a href="mailto:%s">%s</a>'); print "<pre>$testtext</pre>"; #--------# sub identifylinks { # # Erkennt und markiert Hyperlinks in einem Text # # Aufruf: # ======= # my $testtext = 'test: http://www.test.de'; # identifylinks (\$testtext,'<a href="%s" target="_blank">%s</a>','<a href="mailto:%s">%s</a>'); # print $testtext; # my $text = $_[0]; my $link = $_[1]; my $email_link = (defined $_[2] ? $_[2] : ''); my $modul = 1; eval "use URI::Find; 1;" or $modul = 0; my (%uris,%zuordnung); my $erkennung = 1; while ($$text =~ m/\|{$erkennung,$erkennung}/) { # eindeutigen temporären Ersetzungsstring finden $erkennung ++; } if ($modul) { my $lfd_uri = 0; my $finder = URI::Find -> new ( sub { # URI und geschriebenen Link speichern $lfd_uri ++; $uris{$lfd_uri} = $_[0]; $lfd_uri ++; $uris{$lfd_uri} = $_[1]; return sprintf ($link,@_); } ); $finder -> find ($text); } my $ersatz = 0; if (keys %uris) { # alle URI's verbergen vor E-Mail Erkennung $ersatz = 1; foreach my $lfd_uri (keys %uris) { my $ersatz = '|' x $erkennung . $lfd_uri . '|' x $erkennung; $$text =~ s/\Q$uris{$lfd_uri}/$ersatz/g; } } if ($email_link ne '') { # E-Mail auch erwünscht? eval "use Email::Find; 1;" or $modul = 0; if ($modul) { my $finder = Email::Find -> new ( sub { return sprintf ($email_link,$_[0] -> format,$_[1]); } ); $finder -> find ($text); } } if ($ersatz) { # alle verborgenen URI's wieder hervorholen foreach my $lfd_uri (keys %uris) { my $ersatz = '|' x $erkennung . $lfd_uri . '|' x $erkennung; $$text =~ s/\Q$ersatz/$uris{$lfd_uri}/g; } } } #--------# sub identifylinks_topeg { # # Erkennt und markiert Hyperlinks in einem Text # # Aufruf: # ======= # my $testtext = 'test: http://www.test.de'; # identifylinks (\$testtext,'<a href="%s" target="_blank">%s</a>','<a href="mailto:%s">%s</a>'); # print $testtext; # my $text = $_[0]; my $link = $_[1]; my $email_link = (defined $_[2] ? $_[2] : ''); if(eval "use URI::Find; 1;") { my $finder = URI::Find -> new ( sub { return sprintf ($link,@_); } ); my $call=sub{ return $_[0]; }; if($email_link ne '' && eval "use Email::Find; 1;" ) # E-Mail auch erwünscht? { my $finder = Email::Find -> new ( sub { return sprintf ($email_link,$_[0]->format,$_[1]); } ); $call=sub { my $text=shift; $finder -> find (\$text); return $text; }; } $finder -> find ($text, $call); } } #--------#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<pre>Dies ist ein kleiner
Test zur Erkennung von Hyperlinks test.de oder www.test.de oder <a href="http://www.test.de/" target="_blank">http://www.tes
t.de</a>
oder <a href="https://www.testhttps.de/" target="_blank">https://www.testhttps.de</a>
test Platzhalter ||2||||||||||||
oder (<a href="http://test.de/slash/pfad" target="_blank">http://test.de/slash/pfad</a>)
oder <a href="mailto:info@test.example">info@test.example</a>
Und hier ein Gemeinschaftstest: <a href="http://www.test.de/login_index.php?email=info@test.example" target="_blank">http://
www.test.de/login_index.php?email=info@test.example</a>
mal schauen...
</pre><pre>Dies ist ein kleiner
Test zur Erkennung von Hyperlinks test.de oder www.test.de oder <a href="<a href="http://www.test.de/" target="_blank">http:
//www.test.de/</a>" target="_blank"><a href="http://www.test.de/" target="_blank">http://www.test.de</a></a>
oder <a href="<a href="https://www.testhttps.de/" target="_blank">https://www.testhttps.de/</a>" target="_blank"><a href="ht
tps://www.testhttps.de/" target="_blank">https://www.testhttps.de</a></a>
test Platzhalter ||2||||||||||||
oder (<a href="<a href="http://test.de/slash/pfad" target="_blank">http://test.de/slash/pfad</a>" target="_blank"><a href="h
ttp://test.de/slash/pfad" target="_blank">http://test.de/slash/pfad</a></a>)
oder <a href="<a href="mailto:info@test.example" target="_blank">mailto:info@test.example</a>"><a href="mailto:info@test.exa
mple">info@test.example</a></a>
Und hier ein Gemeinschaftstest: <a href="<a href="http://www.test.de/login_index.php?email=info@test.example" target="_blank
">http://www.test.de/login_index.php?email=info@test.example</a>" target="_blank"><a href="http://www.test.de/login_index.ph
p?email=info@test.example" target="_blank">http://www.test.de/login_index.php?email=info@test.example</a></a>
mal schauen...
</pre>
1 2 3 4
identifylinks (\$testtext,'<a href="%s" target="_blank">%s</a>','<a href="mailto:%s">%s</a>'); print "<pre>$testtext</pre>"; identifylinks_topeg (\$testtext,'<a href="%s" target="_blank">%s</a>','<a href="mailto:%s">%s</a>'); print "<pre>$testtext</pre>";
1 2 3 4 5 6 7
my $txt=$testtext; identifylinks (\$txt,'<a href="%s" target="_blank">%s</a>','<a href="mailto:%s">%s</a>'); print "<pre>$txt</pre>"; my $txt_topeg=$testtext; identifylinks_topeg (\$txt_topeg,'<a href="%s" target="_blank">%s</a>','<a href="mailto:%s">%s</a>'); print "<pre>$txt_topeg</pre>";
2010-06-01T17:04:17 biancaIch habe parallel auch mal gebastelt
Code (perl): (dl )1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61#--------# sub identifylinks { # # Erkennt und markiert Hyperlinks in einem Text # # Aufruf: # ======= # my $testtext = 'test: http://www.test.de'; # identifylinks (\$testtext,'<a href="%s" target="_blank">%s</a>','<a href="mailto:%s">%s</a>'); # print $testtext; # my $text = $_[0]; my $link = $_[1]; my $email_link = (defined $_[2] ? $_[2] : ''); my $modul = 1; eval "use URI::Find; 1;" or $modul = 0; my (%uris,%zuordnung); my $erkennung = 1; while ($$text =~ m/\|{$erkennung,$erkennung}/) { # eindeutigen temporären Ersetzungsstring finden $erkennung ++; } if ($modul) { my $lfd_uri = 0; my $finder = URI::Find -> new ( sub { # URI und geschriebenen Link speichern $lfd_uri ++; $uris{$lfd_uri} = $_[0]; $lfd_uri ++; $uris{$lfd_uri} = $_[1]; return sprintf ($link,@_); } ); $finder -> find ($text); } my $ersatz = 0; if (keys %uris) { # alle URI's verbergen vor E-Mail Erkennung $ersatz = 1; foreach my $lfd_uri (keys %uris) { my $ersatz = '|' x $erkennung . $lfd_uri . '|' x $erkennung; $$text =~ s/\Q$uris{$lfd_uri}/$ersatz/g; } } if ($email_link ne '') { # E-Mail auch erwünscht? eval "use Email::Find; 1;" or $modul = 0; if ($modul) { my $finder = Email::Find -> new ( sub { return sprintf ($email_link,$_[0] -> format,$_[1]); } ); $finder -> find ($text); } } if ($ersatz) { # alle verborgenen URI's wieder hervorholen foreach my $lfd_uri (keys %uris) { my $ersatz = '|' x $erkennung . $lfd_uri . '|' x $erkennung; $$text =~ s/\Q$ersatz/$uris{$lfd_uri}/g; } } } #--------#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
#--------# sub identifylinks { # # Erkennt und markiert Hyperlinks in einem Text # # Aufruf: # ======= # my $testtext = 'test: http://www.test.de'; # identifylinks (\$testtext,'<a href="%s" target="_blank">%s</a>','<a href="mailto:%s">%s</a>'); # print $testtext; # my $text = $_[0]; my $link = $_[1]; my $email_link = (defined $_[2] ? $_[2] : ''); my %uris; # eindeutigen temporären Ersetzungsstring finden my $kennung = 'X'; $kennung+=chr(int(65+rand(25))) while (index($kennung,$$text)>-1); my $uri_mod=eval "use URI::Find; 1;" || 0; my $mail_mod=0; $mail_mod=1 if($email_link ne '' && eval "use Email::Find; 1;"); if ($uri_mod) { my $lfd_uri = 0; my $finder = URI::Find -> new ( sub { # URI und geschriebenen Link speichern if($mail_mod) { my $origin=shift; my $text=shift; my $symbol_o=sprintf('%s%u',$kennung,++$lfd_uri); my $symbol_t=sprintf('%s%u',$kennung,++$lfd_uri); $uris{$symbol_o}=$origin; $uris{$symbol_t}=$text; return sprintf ($link,$symbol_o,$symbol_t); } else { return sprintf ($link,@_); } } ); $finder -> find ($text); } # E-Mail auch erwünscht? if ($mail_mod) { my $finder = Email::Find -> new ( sub { return sprintf ($email_link,$_[0] -> format,$_[1]); } ); $finder -> find ($text); $$text=~s/$_/$uris{$_}/g for(keys(%uris)); } } #--------#
2010-06-01T18:20:55 topegNun ein wenig kompliziert heschrieben. Macht das selbe ist aber etwas einfacher:
$$text=~s/$_/$uris{$_}/g for(keys(%uris));
$$text=~s/($kennung\d+)/$uris{$1}/g;