「ChaSen, KAKASI による、ページ名の読みの取得機能」が利用できない (Debian woody限定)†
- 以前のタイトル: 4.2.0より前のPHPでエラーが発生する (Debian, mbregexの関数名が異なる)
- ページ: BugTrack
- 投稿者: 三浦
- 優先順位: 低
- 状態: 完了
- カテゴリー: その他
- 投稿日: 2004-01-15 (木) 19:14:03
- バージョン: 1.4.1
メッセージ†
Debian GNU/Linux 3(woody)のphp4.1.2へmbregex ver1.3.1 のmbregex.soを追加して使用した場合、関数名は
mb_ereg()ではなく、mbereg()なので、func.phpでエラーになる。
mb_regex_encoding()も同様。
php 4.2.0以降ならば、問題はない。
したがって、func.phpのpage_list()で、
$mbregexv = function_exists('mb_regex_encoding');
...
($mbregexv)?mb_regex_encoding(...):mbregex_encoding();
...
($mbregexv)?mb_ereg(....):mbereg(...);
といった修正を行うとよい。
- 埋もれてますのであげておきます。 -- Ratbeta
- お知らせいただきありがとうございます。これは誤解でなければバックワードコンパチの話題ですよね。であれば「古い関数を呼ぶ」新しい関数を(場合に応じて、init.phpあたりで、自動で)定義する方が、ソースが読み辛くならない上に根本的な対策になりそうです。
別の視点で見れば、mbstringエミュレータなどは、このよう古い関数名をあらかじめ定義しちゃうことで優位性を高めるネタにできると。そういう話であっていますでしょうか? (ハズレというか、読み違いです XD ) -- henoheno
- ですので、ご提案の対処法ではないやり方になりそうです。うまい方法を募集します -- henoheno
mbregex: マルチバイト対応の正規表現関数ライブラリ†
- 少々確認しました。この問題は 古いPHP および 古いmbregex (mbstring)で、かつ pukiwiki.ini.php にて $pagereading_enable を1にした時、すなわち「ChaSen, KAKASI による、ページ名の読みの取得」機能を有効にしているとき限定の問題の様です。このBugTrackのタイトルを修正します。*1 -- henoheno
function mb_ereg($arg){
mbereg($arg);
}
function mb_regex_encoding($arg){
mbregex_encoding($arg);
}
- このようなラッパーを定義してやれば、ソースをこまごま更新せずともしのげるのではないかと思います。PukiWikiの基本機能にかかわる重大なエラーかと思っていましたが、非常に限定的な問題だとわかってちょっと力が抜けてしまいました・・・ -- henoheno