お薦め ページ


メニュー

ハワイ島 遊覧飛行ツアー

ハワイ島 B&B・ホテル

ハワイ島 不動産情報

ハワイ島 情報・観光ガイド

ブログ(Blog)

その他

関連サイト

: 個別エントリー・アーカイブ :

2005年8月 5日

「PukiWiki/mbstring無しのPHPでの動作」による解決策(2)

前回の『「PukiWiki/mbstring無しのPHPでの動作」による解決策(1)』の続き。 「mbstring無しのPHPでの動作」に紹介してある解決策に関して、 プラグイン cal.inc.php の作者が「ここで書かれている方法では動きません」と 回答しているのはなぜなのか、という問題。

結論から言ってしまうと、 この解決方法で使用されている mbstring.php はサブセットであり、 mbstringモジュールが提供している関数の全てに対応していないから。 例えば、 mb_convert_kana() という関数は mbstring.php には実装されていない。 そのため、「mbstring無しのPHPでの動作」の策を講じても問題解決にはならない、ということである。

しかし、ここでの私の目標は mbstringモジュールの完全互換を達成することではなく、 cal プラグインがとりあえず走ってくれればよいだけである。 そこで何とかならないかやってみた。

まず、calプラグインでどれくらいmbstringモジュールの関数を使っているか調べてみる。 mbstringモジュールの関数は必ず「mb_」から始まっているので、pluginディレクトリから
%grep -n mb_ cal*
の様に grepコマンドで、ファイル名が「cal」から始まるファイルの中で、 「mb_」から始まる語句を検出し、結果に行番号をつけて表示する、 という検索を掛けてみる。 その結果、使われている関数は、 mb_strpos(), mb_substr(),mb_convert_encoding() そして mb_convert_kana() の 4つであることがわかった。 このうち、mbstring.php に実装されていないのは、 mb_strpos() と mb_convert_kana() の2つである。 実際に実行してみると、問題となるが mb_convert_kana() の方だけであるようだ。 そこで mbstring.php ファイルの最後に
// mb_convert_kana -- カナを("全角かな"、"半角かな"等に)変換する
function mb_convert_kana($str, $to_encoding, $from_encoding = '')
{
        return $str;     // 注: 何も変換しない
}
というように、mb_convert_kana() を実際は何も変換しない関数として追加した。 もぐらたたき的な対策ではあるが、これにより現在のところ大きな問題もなく cal.inc.phpプラグインが動作している。

カテゴリー: Wiki     2005年8月 5日 20:18

トラックバック

このエントリーのトラックバックURL:
http://www.skymerica.com/blog/yotsumoto/mt/mt-tb.cgi/143


コメント

mbstringエミュレータというのを開発しています。mb_convert_kanaもサポートしているので,大抵のmbstring用モジュールは動作すると思います。

投稿者 Andy : 2005年8月29日 21:32

コメントしてください




保存しますか?


 
ハワイ島での遊覧飛行ツアーとB&Bのスペシャリスト、スカイメリカ
Copyright © 2003,2009 Skymerica Corp. All rights reserved.