私は文字列のURLを見つけてリンクに変換する方法を探しています。PerlはリンクするURL文字列を変換する
URLは、文字列のどこにあっても構いません(先頭、中央、または末尾)。
正規表現が望ましいですが、CPANモジュールも歓迎します。
私は文字列のURLを見つけてリンクに変換する方法を探しています。PerlはリンクするURL文字列を変換する
URLは、文字列のどこにあっても構いません(先頭、中央、または末尾)。
正規表現が望ましいですが、CPANモジュールも歓迎します。
あなたは、文字列を検索し、リンクにそれを作るために置換を行うために正規表現::一般的に使用することができます。 他に何もない場合は、URLをリンクテキストとして使用しました。
use Regexp::Common "URI";
my $string="Some text containing http://stackoverflow.com/questions/4587876/perl-convert-url-string-to-link in middle" ;
$string =~ s(($RE{URI}{HTTP}))
(<a href="$1">$1</a>)gx ;
print $string ;
HTTPSを認識しないことを除いて、うまく動作します。私は同じコードを使ってみましたが、HTTPをHTTPSに置き換えましたが、何もしません。何か案は? – shaneburgess
doc:http://search.cpan.org/~abigail/Regexp-Common-2010010201/libのように、$ RE {URI} {HTTP} { - scheme => qr/https?/}がうまくいくようです。 /Regexp/Common/URI/http.pm – Hugmeir
ありがとう@Hugmeir私はドキュメントを読んだが、スキムの部分を理解できなかった... – shaneburgess
最も一般的な解決策は、Regexp::Commonです(意図していません)。あなたは(当然、$1
で)一致を維持するために、以下に示すよう
use Regexp::Common qw /URI/;
while (<>) {
/$RE{URI}{HTTP}{-keep}/ and print "<A HREF="$1">My Link Name</A>";
}
は、上記の例では、唯一の行につき1つのリンクを見つけ{-keep}
バージョンを使用する必要があります。より多くの修正は、ユーザーのための練習として残っています。
もう1つのオプションは、SchwernのURI::Findです。 PODの例から:
use CGI qw(escapeHTML);
use URI::Find;
my $finder = URI::Find->new(sub {
my($uri, $orig_uri) = @_;
return qq|<a href="$uri">$orig_uri</a>|;
});
$finder->find(\$text, \&escapeHTML);
print "<pre>$text</pre>";
use strict;
use warnings;
use 5.010;
use utf8;
use Regexp::Common qw /URI/;
my $string_with_url = <<'END_STRING';
This is an url to your question:
http://stackoverflow.com/questions/4587876/perl-convert-url-string-to-link
END_STRING
say $string_with_url;
$string_with_url =~ s/($RE{URI}{HTTP})/get_link()/eg;
say $string_with_url;
sub get_link {
return <<'END_LINK';
_____________¶¶¶¶¶¶¶¶¶¶¶¶¶¶
___________¶¶6666555666666¶¶¶
__________¶¶6666555555556666¶¶
___¶¶¶__¶¶¶¶116666556611¶¶666¶¶¶¶
__¶¶cc¶¶§§§¶¶¶11111111¶¶¶¶¶6¶¶cc¶¶
__¶¶cc¶¶¶§§§§¶¶¶¶¶¶¶¶¶¶§§§¶¶¶¶cc¶¶
__¶¶ssc¶¶¶¶§§§§§§§§§§§§§§¶¶¶¶css¶¶
__¶¶ss¶¶§§¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶§§§¶¶ss¶¶
____¶¶ss¶¶ss¯¯¯¯ssss¯¯¯¯ss¶¶ss¶¶
______¶¶ssss__¶¶cccc¶¶__ssss¶¶
______¶¶¶ssscc¶¶cccc¶¶ccss¶¶¶¶
_____¶¶££¶¶sssccccccccss¶¶¶££¶¶
____¶¶££££¶¶ss¶¶cccsss¶¶¶£££¶¶¶¶¶
__¶¶¯¯¶¶¶¶¶¶¶¶¯¯¶¶¶¶¶¶¶££££¶¶¶ss¶¶
__¶¶____________¶¶££££££££¶¶ssss¶¶
__¶¶¯¯$$$$$$$$¯¯¶¶£££££££££¶¶¶cc¶¶
__¶¶__$$ƒƒƒƒ$$__¶¶£££££££¢¢¶¶ccc¶¶
__¶¶¯¯$$ƒƒƒƒ$$¯¯¶¶¢¢¢¥¥¢¢£££¶¶cc¶¶
__¶¶___$$ƒƒ$$___¶¶££££££££¶¶¶¶¶¶¶
____¶¶__$$$$__¶¶££££££¶¶¶¶¥¥¶¶¶
______¶¶____¶¶¶¶¶¶¶¶¶¶¥¥¥¥¥¶¶¶
________¶¶¶¶¶¶¶¶¶¥¥¥¥¥¥¥¶¶¶¶
____________¶¶¶¶¶¶¶¶¶¶¶¶
END_LINK
}
http://stackoverflow.com/questions/2564661/how-can-i-extract-urls-from-plain-text-with-perl http://stackoverflow.com/questions/2818575/regular -expression-pcre-for-url-matching http://stackoverflow.com/questions/3958180/how-can-i-extract-urls-from-plain-text-in-perl – daxim