• 締切済み

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

  • CGI
  • 回答数2
  • ありがとう数3

みんなの回答

回答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

  • PerlでCGIの書き方

    今、HTML:Templateを用いてCGIのプログラムを書いています。 基本的にCGI上のボタンをおすとPOSTで情報をわたして、次のCGIにいき、そこからTMPLを読み出して、画面を表示してるのですが、画面場のボタンをおしてもCGIを更新せずに、Perlの実行だけすることは可能ですか?あるいは、POSTでCGIに届いた情報をIF文で中身を確認して、表示するTMPLをかえて、Perlの実行も行うのが普通のやりかたなのでしょうか? あまりよくわからずにネットだけの情報をたよりにプログラミングをしているので設計の仕方など分からないことが多々あります。 どなたかCGIに詳しい方ご返答おねがいします。

    • ベストアンサー
    • CGI
  • cgi(perl)で文中のURLを自動でリンクするようにしたい

    CGI(perl)でログファイルから読み込んだデータの中に http://www…のようなものがあったらそれを自動で <A HREF="http://www~">http://www~</A> のような形にしたいのですが、どのように表記したらいいのでしょうか? http://を探してきて置き換えるのかとも思ったんですが、それだとどこまで、というのが 不明ですよね?

    • ベストアンサー
    • Perl
  • CGI/Perl

    CGI/Perlについて1から学びたいと思い、本を買おうと思っているのですが、たくさんありすぎて、どれを買えばわかりません。 CGIやPerlについてはまったくの初心者です。 いい本があったら教えてください。

  • Perl/CGIを学んでいるのですが

    Perl/CGIを独学で学んでいます。 掲示板やチャットが作成できる程度です。 私はPerl=CGIと考えていたのですが(HTMLがサイト作成に使うことのように専用の言語とでもいいましょうか)、ぜんぜん違うようです。 PerlはCGI以外に Perlではどのようなことができるのでしょうか? 大まかな認識だと ビィジュアルを持たない、(VBでいうフォームパーツですかね)バッチファイルなど? で、コマンドプロンプトで動作するようなイメージがありますが(.batを起動するとメモ帳みたいなアプリではなく、特定の処理して終了みたいな) 無知な私にPerlで出来ることをお教えください。 せっかくPerl/CGIが少しは理解できているのでPerlをもっと勉強しようかとあぐねいているとこらです。 混乱しているため変な質問でしたらすいません

  • Perl(cgi)でこれはできますか?

    今まで、デスクトップ上にあるJAVAのプログラムで、 http://***.ne.jp を解析して、その中から、ある値を含む条件のURLのみを抜き出してHTMLリンク集を作っていました。 この作業を、ウェブベース(sakura.ne.jpのライトプランで利用予定。使用可能言語は多分perlのcgiのみ)で行うことはできないものかと思っております。 具体的には、 インプットボックスに、解析したいURLを入れて、検索ボタンを押すと、そのURLの文章の中から必要な文章のみを抜き出してそれと、HTMLリンク集にして返すというプログラムです。 また、perlやcgiは今まで殆ど触ったことが無い言語なので、どんなことでも、参考になりそうなことがありましたら是非是非、ご紹介ください。 宜しくお願い致します。

    • ベストアンサー
    • Perl
  • perlでのCGI

    perlでCGIを書くときは最初の行に Content-Type: text/htmlと書くという認識で正しいですよね? 最初の行にその文章を書き二行目は空白にして三行目からスクリプトを書いたのですが なぜか一行目のContent-Type: text/htmlという文章がwebに表示されてしまいます… これはどのようにしたら良いのでしょうか 回答お願い致します。

    • ベストアンサー
    • CGI
  • Perl5とActivePerl

    いつもお世話になっています。 HP制作をしており、やむを得ずPerl・CGIを勉強しています。 初めて3日目くらいの超初心者です。 大変基本的な質問で申し訳ないのですが、 PerlとActive Perlの違いが知りたいのです。 CGI自体はプログラミングされているものを購入して使うつもりで、今設置作業をしているのですが、Perlのことがあまりにも分からないので、「はじめてのPerl/CGIプログラミング」という本も読みながら進めています。 そのCGI開発元では環境条件として「Perl 5.00503以上がインストールされていること」とあるのですが、これはActivePerlとは別ですか? 本「はじめてのPerl/CGIプログラミング」にはActivePerl-5.8.7.813をインストールできるCDが付属しているので、可能ならこのActive Perlを使いたいのですが、無理なのでしょうか? 基本的な質問で申し訳ありませんが、どうぞよろしくお願いいたします。

    • ベストアンサー
    • CGI
  • perlのcgiが動かない・・・

    cgiを組もうと思い、まずは簡単なもので試そうと思ったのですが、 うまくいかず困っています。 ↓プログラムは、こんな感じです。 ファイル名:index.cgi #!/usr/bin/perl print "<html>"; print "<body>"; print "abc"; print "</body>"; print "</html>"; <やってみたこと> ・Perlのパス「#!/usr/bin/perl」 が間違っていないか? which perl で /usr/bin/perl とでます。 ・Apache の設定が正しく行なわれているか? http://localhost でindex.htmlがきちんと表示できています。 ・「hello.cgi」 の設置場所を間違っていないか? プログラムソースが出るということは、 間違っていないのではないでしょうか? ・ためしに実行してみた TELNETで ./index.cgi <html><body>abc</body></html> とでてきました。 これはちゃんと動いているのでは?? 何か勘違いしていますか? お気づきの点を教えてください。よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • Perlが働かない

    CGIのプログラミングを始めるためにApacheとActive Perlをインストールしたのですが、CGIをIEから開いてもPerlが働かず、 そのままソースが表示されてしまうのですが、どうしたらよいでしょうか。 ちなみにWindows XPを使っています。

    • ベストアンサー
    • Perl
  • CGI/Perlでこんなことできますか?

    初めて質問します。 プログラミング初心者なので、トンチンカンなこと言ってるかもしれませんが、ご教授願います。 自分で作ったHPで、他のサイトのWWWの一部を取り込み、表示したいのです。 具体例を挙げます。 自分のHPのフォームに入力したデータをgoogleなどで検索させ、その結果の一部を自分のHPに表示させたいのです。 もし、出来るのならどのようなコマンドが必要でしょうか? CGI/Perlではできないのでしょうか? 2週間以上悩んでます。どなたか、教えてください!!

    • ベストアンサー
    • CGI

専門家に質問してみよう