テキスト中のキーワードをリンクするPerlサンプルスクリプト

任意のキーワードリストに含まれるテキスト中のキーワードに、特定のページ(URL)にリンクするPerlのサンプルスクリプトを作ってみました。ブログソフトとか掲示板ソフトを開発する際に役に立つと思います。文字エンコードがUTF-8、EUCではOKでしたが、SJISではうまく動きませんでした。

以下、サンプルスクリプトの一部です。
my @wordlist = ('はてな', 'ブログ', 'アルファブロガー');
foreach my $word (@wordlist) {
my $encword = $word;
$encword =~ s/(\W)/'%'.unpack('H2', $1)/eg; # uri encode
my $link = "<a href=\"serach.cgi?querystr=$encword\">$word</a>";
$text =~ s/$word/$link/g;
# アンカーテキストのキーワードは元に戻す
my $pattern = "(<a href.+)<a href.+$word</a>(.+/a>)";
$text =~ s/$pattern/$1$word$2/g;
}
print $text;

リンクの処理のところが微妙ですが、適当に修正して使っていただければ幸いです。

はてなダイアリーのキーワードにリンクするためのサンプルもあるようです。動かしてみたわけでないのでハッキリとはいえませんが、ソースを見る限りテキスト内でアンカータグでリンクを行っている場合は、まずいような気もします。

はてなダイアリーキーワード自動リンクAPI - はてなダイアリー日記
なお、上記ファイルは現状で300KBほどありますので、アプリケーション側で一定時間キャッシュして頂くなどの措置をお願いできればと思います。
テキスト一つ処理するだけで300KBですか、はてな側も大変かも知れませんが呼び出す方も大変ですね。
[1177] Posted by kagahiro at 2008/02/24 23:14:33
オープン | 1 point | Link (2) | Trackback (1) | Comment (0)

キーワード

perl プログラミング オープンソース CGI サンプル プログラム キーワード リンク 

ジャパンのホームページ

追記

サンプルスクリプトのソース
サンプルスクリプトのソースを添付ファイルに登録しています。
Posted by kagahiro at 2008/02/24 23:22:00

添付ファイル

1177_1_sample1.pl 1069 byte 2008/02/24 23:20:14 kagahiro

テキスト中のキーワードをリンクするPerlサンプルスクリプト 関連リンク

Perl(パール)
perl(パール)とは、Larry Wall氏によって開発された、テキストの検索や抽出やレポート作成に適した、C言語...
URLを元にページのタイトルを取得するPerlのサンプルスクリプト
URLから元ページのタイトルを取得するためのperlサンプルスクリプトです。処理手順は以下の通りです。1.ペ...

テキスト中のキーワードをリンクするPerlサンプルスクリプト トラックバック

トラックバックURL :

Linked from IT土方日記 : はてなを潰すためにはどうすればいいのか at 2008/02/25 02:10:58
この方がおっしゃっているように、はてなの強みはSEOにあります。それならば、はてなを潰すにはその強みを無効化、弱体化すればよいのではないでしょうか。 はてなはなぜ潰れないのか? 「はてなはSEOが強いので、検...

テキスト中のキーワードをリンクするPerlサンプルスクリプトへのコメント


詳細の入力フィールドを表示する

おすすめ  (チェックしてコメントすると最新情報に掲載)
コメント :

< 前の投稿      次の投稿 >

アクセスランキング

今日のアクセスランキング TOP 10

  1. SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (3 PV)
  2. 有力将棋系ユーチューバーのショウヤンさんが将棋ウォーズで「ソフト指し」を告白し衝撃走る (3 PV)
  3. グーグルニュース(Google News)日本版が表示できるURL (2 PV)
  4. [将棋]角換わり▲4五桂速攻(△6五桂速攻) #佐藤天彦名人 #三浦弘行九段 (2 PV)
  5. Google News (グーグルニュース)日本版 (2 PV)
  6. Tumblr(タンブラー)のダッシュボードからおすすめ投稿を消す(非表示にする)方法 (1 PV)
  7. PHPでMySQLに接続して、SELECTでデータを取得するサンプルプログラム (1 PV)
  8. [将棋]将棋実況ユーチューバーのクロノさんが朝日新聞のクレームで棋譜中継を配信中止 (1 PV)
  9. Google Finance(グーグルファイナンス)日本版が表示されるようになってますが・・・ (1 PV)
  10. [Perl]UTF-8でエンコードされた文字列の文字数を取得するコード (1 PV)

今月のアクセスランキング TOP 10

  1. SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (2289 PV)
  2. Google News (グーグルニュース)日本版 (701 PV)
  3. 有力将棋系ユーチューバーのショウヤンさんが将棋ウォーズで「ソフト指し」を告白し衝撃走る (378 PV)
  4. Tumblr(タンブラー)のダッシュボードからおすすめ投稿を消す(非表示にする)方法 (378 PV)
  5. 最新のGoogle News(グーグルニュース)日本版のRSSが取得できるURL (370 PV)
  6. [将棋]角換わり▲4五桂速攻(△6五桂速攻) #佐藤天彦名人 #三浦弘行九段 (207 PV)
  7. グーグルニュース(Google News)日本版が表示できるURL (153 PV)
  8. ウェブページを1回だけリロード(再表示)する方法 (150 PV)
  9. [Perl]UTF-8でエンコードされた文字列の文字数を取得するコード (143 PV)
  10. USTREAM(ユーストリーム) 日本語版 無料のライブ映像配信サービス (138 PV)

アクセス統計

ディレクトリ

関連サイト