[PHP-dev 892]Re: mb_ereg_replaceについて

Moriyoshi Koizumi moriyoshi @ at.wakwak.com
2003年 9月 27日 (土) 06:00:31 JST


小泉です。

パッチありがとうございました。

さて、PHP_4_3 ブランチでの無限ループ問題はどうやら Ruby regex の仕様もしく
はバグのような気がします。
もっとも、実際の Ruby では、SINGLELINE オプションと MULTILINE オプションの
組み合わせはもはや出来ないようですので (前は出来たような気がするんですが気
のせい?)、結局は PHP 固有の問題ということになります。

注:PHP では、デフォルトオプションは、いわゆる POSIX 互換モード 
(RE_OPTION_SINGLELINE と RE_OPTION_MULTILINE の組み合わせ) となっています。

そもそもこの組み合わせ自体が間違いなのか何なのかは、正規表現に疎い私にはわ
かりません。どなたか詳しい方、ご教示ください。

検証すべく、Ruby の HEAD ブランチの regex コードに更新するパッチを
作り、試してみましたが、結果は同じでした。

パッチは以下に。
http://www.voltex.jp/patches/mbregex_update_patch-20030927.diff.gz

このあいだリリースされた ruby 1.8.0 で修正された問題と [ruby-list:38393] 
で指摘された i オプション指定時の文字クラスの問題の fix を含みます。

なお、このパッチがたとえ発見されていない何らかのバグを修正するものだとして
も、実際に 4.3.x ブランチにコミットされる見込みはありませんので注意してく
ださい。あくまで非公式パッチという理解でお願いします。

ところで、以下余談ですが。

PHP_4_3 ブランチにある、Ruby のコードベースより持ってきた正規表現ライブラ
リですが、ruby-dev の下記のスレッドによれば、これもグレーゾーンかもしれな
いということです。もっとも、ruby-dev を追っているわけではないので、その後
の経緯は分かりません。どなたかご存知の方、フォローアップしてくださいませ。

http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/13794

まあ、いずれにせよ、鬼車への移行はいろんな意味で正解だったのではないでしょ
うか。あとは、コンパチビリティの保証だけですね。。。



PHP-dev メーリングリストの案内