- 締切済み
Perl CGI Autolink
http://wwwとhttps://wwwが混在する文章を、<a href="http://www">http://www</a>や<a href="https://www">https://www</a>にAutolinkするような変換は、Perl CGIでどのようにプログラミングするかを教えてください。http://wwwとhttps://wwwが混在する文章であることがポイントです。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- _--_1l1_1_
- ベストアンサー率67% (102/152)
修正 $text =~ s/($RE{URI}{HTTP}{-scheme =>'(https|http)'}(:?k:#$fragment)?)/$q->a({href => $1}, $1)/ge; ↓ $text =~ s/($RE{URI}{HTTP}{-scheme =>'(https|http)'}(:?#$fragment)?)/$q->a({href => $1}, $1)/ge;
- _--_1l1_1_
- ベストアンサー率67% (102/152)
use strict; use warnings; use CGI; use Regexp::Common qw/URI/; use Regexp::Common::URI::RFC2396 qw/:parts/; my $text = do { local $/ = undef; <DATA> }; my $q = CGI->new(); $text =~ s/($RE{URI}{HTTP}{-scheme =>'(https|http)'}(:?k:#$fragment)?)/$q->a({href => $1}, $1)/ge; print $text; __DATA__ Autolinkするような変換は、Perl CGIでどのようにプログラミングするかを教えてください。http://wwwとhttps://wwwが混在する文章であることがポイントです。
お礼
Most Valuable answer,Thank you
お礼
sub auto_link { $_[0] =~ s/([^=^\"]|^)(http\:[\w\.\~\-\/\?\&\=\@\;\#\:\%]+)/$1<a href=\"$2\" target=\"_blank\">$2<\/a>/g; } を次のように修正し、解決いたしました。 sub auto_link { $_[0] =~ s/([^=^\"]|^)(http\:[\w\.\~\-\/\?\&\=\@\;\#\:\%]+|https\:[\w\.\~\-\/\?\&\=\@\;\#\:\%]+)/$1<a href=\"$2\" target=\"_blank\">$2<\/a>/g; } いろいろ参考になり大変ありがとうございました。
補足
早速の回答ありがとうございます。実は下記の関数を使っておりますので、これをhttpとhttps対応に修正することは可能でしょうか?宜しくお願いします。 #------------------------------------------------- # 自動リンク #------------------------------------------------- sub auto_link { $_[0] =~ s/([^=^\"]|^)(http\:[\w\.\~\-\/\?\&\=\@\;\#\:\%]+)/$1<a href=\"$2\" target=\"_blank\">$2<\/a>/g; }