atab0uの巣

MtGの情報、自作デッキ、MOの情報等。

オートリンクについて本気出して考えてみた このエントリーを含むはてなブックマーク

http://www5.atpages.jp/rom/?mode=read&key=1213123349&log=
偽導師さんが書いた記事に、コメントでさらっと適当にコードを載せてみたら、どうやらRoMさんやArthさんが採用しようと試みているようで、こんな適当なコードでは恥ずかしいのでちょっと真面目に改変して使い方等を説明してみます。

[6/16 00:12]色々と記事全体を修正しました。
まずこれが使えるのはJavaScriptが使えるウェブサイトorブログのみです。
DNの人はあきらめるか引っ越してくださいw

使い方

使い方は簡単です。ブログのテンプレのheadタグ内に以下をコピペしてください。
<script language="javascript" type="text/javascript">
<!--
var hlink = new hlink();
function hlink(){
  window.onload = link;
  function link(){
    var body = document.body;
    var url= new Array();
    url["whisper"] = "http://whisper.wisdom-guild.net/search.php?cardname=";
    url["takara"] = "http://mtg.takaratomy.co.jp/cgi-bin/autocard/acjp.cgi?";
    body.innerHTML = body.innerHTML.
    replace(/《([^》/)]+)\/([^》/)]+)(\([^》/)]+\))?》/gi, '<a href="' + url["takara"] + '$2" target="_blank">《$1/$2$3》</a>').
    replace(/《([^》/)]+)(\([^》/)]+\))》/gi, '<a href="' + url["takara"] + '$1" target="_blank">《$1$2》</a>').
    replace(/《([^》/)]+)》/gi, '<a href="' + url["whisper"] + '$1" target="_blank">《$1》</a>');
  }
}
//-->
</script>
コピペすると下の項目の規則に則って、ブログ内の《》で括った項目が自動でタカラトミーのカード検索またはWhisper検索の検索結果へのリンクになります。
オートリンク先を全てタカラトミーのカード検索にしたい人は、後で述べる文字コードの項目をよく読んだ後に、14行目replace…url["whisper"]…を…["takara"]…に変更してください。

オートリンクの規則

(whisper)/(takaratomy)の順で、○が可能、×が不可能、△は文字コードの関係上サイトがSJISでないと検索できない事を意味します。()で括った方がこのコードをそのままコピペした時に場合分けで使用される検索です。
○/(○) 《ロクソドンの戦槌/Loxodon Warhammer(10E)》
○/(○) 《ロクソドンの戦槌/Loxodon Warhammer》
(○)/× 《ロクソドンの戦槌 Loxodon Warhammer》
(○)/△ 《ロクソドンの戦槌》
(○)/○ 《Loxodon Warhammer》
○/(○) 《Chaos Orb(2ED)》

元記事のコメントに書いた奴より若干正規表現を見直したので、ある程度汎用性は増しています。九印さんの辞書データでも大丈夫です。

文字コード

タカラトミーのカード検索はSJISのみの対応なので、FC2などのEUC-JPで書かれたHTMLでは日本語検索はうまく機能しません。確認したところ IE7○ 火狐3× Opera9.5× でした。自分のサイトがどんなコードで書かれているかわからない人は、このコードをそのままコピペしておいた方が無難です。
一応簡単な確認方法としては、サイトのソースを秀丸・サクラエディタ等の高機能テキストエディタで開いてみて、プロパティ(エディタに依って違います)から文字コードが確認できます。



[追記]
IE7で動作していない模様。その他のブラウザでの挙動情報を求む。

[追記2]
偽導師さん、確認ありがとうございます。どうやら変えた正規表現部分がIE・火狐系では動いていないようですね。JSの規格的に最小マッチング(.+?)が正しくないのだろうか?
文字コードに関しては、《ロクソドンの戦槌/Loxodon Warhammer(10E)》と《ロクソドンの戦槌》両表記に一行で対応させようと無茶をした結果、日本語投げた方が楽かなと思った訳で、要は手抜きなんです…^^; もう少し練ってみます。

[追記3]
原因がわかりました。正規表現のダメ文字ばかりに気をとられていてJSのダメ文字/に\をつけるのを忘れていました。そこを修正。これでIE、火狐での挙動はたぶん大丈夫だと。
それと、正式な辞書表記された場合は英語でタカラトミー検索、日本語のみの場合はWhisper検索にするように場合分けました。SJISで書かれている場合はurl["whisper"]をタカラトミーのURLと同じにしても大丈夫。

まだ環境依存があるかもなのでテスト報告歓迎です。

テスト→《ロクソドンの戦槌/Loxodon Warhammer(10E)》《梅澤の十手/Umezawa's Jitte》《梅澤の十手》


[追記4]
偽導師さんの指摘を受けてオールドエキスパンション表示に対応させました。
テスト→《Chaos Orb(2ED)》
それと記事を全体的に修正しました。
  1. 2008/06/15(日) 16:34:29|
  2. 連絡
  3. | トラックバック:0
  4. | コメント:6
<<最近回して面白いと思ったデッキ集 | ホーム | 【MtG】PT-ハリウッド08 準決 Jan Ruess×Shuhei Nakamura Game4【解説付き】>>

コメント

Fire Fox(Verはわかんね。たぶん2以上)
IE 6
で動作していません。
あと
replace(/《(.+?)(/.+?)?》/gi, '<a href="' + url["base"] + '$2" target="_blank">《$1$2》</a>');
にすればエンコード気にしなくていい説。
  1. 2008/06/15(日) 18:09:10 |
  2. URL |
  3. 偽鶴田導師 #-
  4. [ 編集]

同条件で動作確認
FC2でもタカラトミーにアクセスできるみたいですね。

ただ《Volcanic Island(LEB)》
《英語名+(エキスパンション)》
だと表示出来ないですね。
  1. 2008/06/15(日) 19:21:43 |
  2. URL |
  3. 偽鶴田導師 #-
  4. [ 編集]

スレイプニール2.48(IE6エンジン)で確認しました。きちんと動いています。なんとお礼を言っていいのやら。

ところで《》についてなんですが、うちの方でこれを取り除いている理由がありまして。
取り除かなかった場合、投稿確認画面で「投稿」ではなく「修正」した場合に多重にリンクが発生する問題が出ているからです。

http://www7.atpages.jp/romnotest/?mode=read&key=1213458244&log=

こちらのテスト用でご確認してもらえれば、と思います。
パスワードはaです。まずは本文画面に行って、パスワードを変更せずに先へ進み、その後修正を押してください。
現状というか(菊四の解るレベル)だと、これは当初の《》を削るバージョンで発生しないのでそのままにしています。
ご指摘の《$1》にしたいと思っていますが、どうしたものかと悩んでいます。申し訳ありません。
またご報告が遅くなった件につきましても真に申し訳なく思っています。
  1. 2008/06/15(日) 19:23:08 |
  2. URL |
  3. 菊四 #JXoSs/ZU
  4. [ 編集]

replace(/《([^》/)]+)(([^》/)]+))》/gi, '<a href="' + url["takara"] + '$1" target="_blank">《$1$2》</a>').
追加でいけました。
  1. 2008/06/15(日) 19:57:08 |
  2. URL |
  3. 偽鶴田導師 #-
  4. [ 編集]

一通り読ませていただきました。

素晴らしい、の一言です。

自分の場合は伝統的なUNIX正規表現を使用してxyzzyで書いた場合、

¥(《¥([^》]+/¥)?¥(¥w[^》]*¥)?》¥)

を、

<a href="http://magiccards.info/autocard.php?card=¥3" target="_blank">¥1</a><br>

とすることで対処していました。(全角の¥はバックスラッシュです)

でも、こちらで紹介されている置換の仕方のほうがスマートで良いですね。
参考にさせていただきます。

  1. 2008/06/16(月) 10:12:13 |
  2. URL |
  3. testing #0w7KIci.
  4. [ 編集]

いまさらですがOpera9.22で動作確認。
一応出てなかったようなので
  1. 2008/06/16(月) 16:16:25 |
  2. URL |
  3. Nameless #-
  4. [ 編集]

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバックURLはこちら
http://atab0u.blog105.fc2.com/tb.php/33-239f53b6
この記事にトラックバックする(FC2ブログユーザー)

過去ログとか

最近の記事+コメント

カテゴリー

ブログ内検索

M:TG Wiki ここ

つっこみとか

なんか連絡したいことがあったらどぞ

名前:
メール:
件名:
本文: