スタッフブログ

  • カテゴリ 技術全般 の最新配信
  • RSS

ブログに記事を書くとき 特定文字を実体参照にする

naoto : 技術全般 2009/5/15 13:20

Blogger's Avatar

こんにちわ。なおとです。

このブログ(D3ブログモジュール)に記事を書くときは、基本的にhtmlを直接書く機能を使って書いています。 そのため、phpやjavascriptのコードを掲載するときには、適宜文字を実体参照で書く必要があります。

そのための方法として、以前はこんなやり方をしていました。

  • 記事として、「<>&"'」の変換をしたい部分だけ書く
  • オプション「HTMLを有効にする」のチェックを外す
  • 「プレビュー」ボタンを押す
  • プレビュー表示部分を選択して、選択した部分のソースを表示する(ブラウザFirefoxの機能)
  • 必要なところをコピーしてソース表示を閉じる
  • 元の記事フォームに貼り付ける
  • オプション「HTMLを有効にする」のチェックを入れる
  • 記事を仕上げる
  • 送信する

この方法はまったくダメとは言いませんが、もっとうまいやり方があるはずです。 いやあるはずということはなくて、実際にもっといい方法を知っているのに、やっていませんでした。 こういった無意味な労力を割くことは、自分としては「悪」と考えています。

そこでこれをブックマークレットで解決することにしました。 検索して調べてみるといくつか高機能なものもあるようでしたが、私は次の記事にあるシンプルなものを使うことにしました。

テキストエリア内の選択文字列を簡単に実体参照化するブックマークレット - エブログ

ただ、'(シングルクォーテーション)を変換できていないようでしたので、その分だけ修正したものを使っています。

選択範囲をhtmlescape

<a href="java script:(function(){var%20d=document;function%20r(s){%20return%20s.replace(/&amp;/g,'&amp;amp;').replace(/([<>\&quot;\'])/g,function(m0,m1){return%20{'<':'&amp;lt;','>':'&amp;gt;','\&quot;':'&amp;quot;','\'':'&amp;#39;'}[m1];});}%20if(d.selection){d.selection.createRange().text%20=%20r(d.selection.createRange().text);}else{var%20ta=d.getElementsByTagName('TEXTAREA');%20for(var%20i=0;i<ta.length;i++){if(ta[i].value){var%20s=ta[i].selectionStart;var%20e=ta[i].selectionEnd;var%20v=ta[i].value;var%20t=v.slice(s,e);if(t){ta[i].value=v.slice(0,s)+r(t)+v.slice(e);}}}}})();">選択範囲をhtmlescape</a>

トラックバック

スタッフブログ最新
カテゴリ一覧

〒104-0061 東京都中央区銀座1丁目3番3号 G1ビル7階
お問い合わせ TEL 03-3524-8860

Copyright(c) 2012 RYUS.All Rights Reserved.