薭の件。

  • このトピックには1件の返信、1人の参加者があり、最後にo6asanにより12年、 4ヶ月前に更新されました。
1件の返信スレッドを表示中
  • 投稿者
    投稿
    • #31
      o6asan
      キーマスター

      みなさん,こんばんは。

      FHさんの「FHの掲示板」No.1207~No.1225 での「薭の件。」について,KENTさんのところのjoyful.zip をダウンロードして,少しカスタマイズしてみました。
      実は,上の行の「薭の件。」の&は全角です。数値参照で文字にしてもらいたい場合と,コードのまま書いてもらいたい場合の仕分け方法は,人間が指定しなくてはいけませんが,そこまではできていないので,ごまかしですが,薭のまま表示したいときは,&を全角で入れています。

      カスタマイズに当たって,参考というか流用させていただいたのは,「&の実体参照への変換」です。↓
      http://www.akatsukinishisu.net/wiki.cgi?%26%A4%CE%BC%C2%C2%CE%BB%B2%BE%C8%A4%D8%A4%CE%CA%D1%B4%B9
      上記の下の方にあるサンプルスクリプトを流用しました。

      簡単なカスタマイズの方法としては,
      $val =~ s/&/&/g; を #$val =~ s/&/&/g;
      というのはすぐ思いつきましたが,
      「【PHP関連】「&」(アンパサンド)をエスケープしなければならない実例」↓
      http://shimax.cocolog-nifty.com/search/2007/12/php_f864.html
      を読むとそれはまずいようです。2007/12にまずいなら今でもまずいだろうということで,薭のような数値参照を,その数値によって条件分岐して処理するという方法を考えました。

      しかし,Perlに疎い悲しさ,自分ではどうにもならず,投げようかなと思ったときに,「&の実体参照への変換」を発見しました。で,これを流用しまして,joyful.zip 内のinit.cgiを書き直しました。この方法は,「HTMLで有効な文字の範囲」をSGML宣言を参照してきちんと分類し,対処しているようです。したがって,テーブルは使用していませんが「変換テーブルを作成して対処するホワイトリスト方式」の一種と言えるのではないかと思います。

      というわけで
      「薭」
      が表示されました。

      なおかつ,「【PHP関連】「&」(アンパサンド)の部分のソースを見ていただけばわかるように,補助漢字に関係ない半角のアンパサンドは,ちゃんと&になっています。

      追記(8/17):
      8/14に掲示板を整理し,UTF-8版を使うようにしました。そのときに,それまでにSHIFT-JIS版に投稿されていた記事についても一緒にしてしまいました。したがって,上記の全角&等についての言及はSHIFT-JIS版での話です。

    • #32
      o6asan
      キーマスター

      うーむ,<hr>の入れどころがわからない。(汗)

      ここでいいみたいね。(ホッ)

1件の返信スレッドを表示中
  • トピック「&#34221;の件。」には新しい返信をつけることはできません。