• 締切済み

Perl CGI Autolink

http://wwwhttps://wwwが混在する文章を、<a href="http://www">http://www</a>や<a href="https://www">https://www</a>にAutolinkするような変換は、Perl CGIでどのようにプログラミングするかを教えてください。http://wwwhttps://wwwが混在する文章であることがポイントです。

みんなの回答

回答No.2

修正 $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;

yogihann
質問者

お礼

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; } いろいろ参考になり大変ありがとうございました。

yogihann
質問者

補足

早速の回答ありがとうございます。実は下記の関数を使っておりますので、これをhttpとhttps対応に修正することは可能でしょうか?宜しくお願いします。 #------------------------------------------------- # 自動リンク #------------------------------------------------- sub auto_link { $_[0] =~ s/([^=^\"]|^)(http\:[\w\.\~\-\/\?\&\=\@\;\#\:\%]+)/$1<a href=\"$2\" target=\"_blank\">$2<\/a>/g; }

回答No.1

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://wwwhttps://wwwが混在する文章であることがポイントです。

yogihann
質問者

お礼

Most Valuable answer,Thank you

関連するQ&A