[PHP-dev 524] Re: [Fwd: Japanese: mb_split broken?]

Moriyoshi Koizumi php-dev@php.gr.jp
Thu, 03 Oct 2002 11:47:23 +0900


小泉です。

> > 標準関数のereg_*()などをmb_*()に置き換える事が最終目標
> > (勝手にそう思っています)なのでこっそり変えてNEWSに入れて
> > しまうのも手かもしれません。
> > 
> > # 塚田さん、デフォルト動作を変えると困りますか?
> > 
> 
> あまり深く考えていなかったのですが、
> 拡張モードというのに関して、POSIX の 拡張正規表現(Extended 
> Regular Expression)と、Perl(あるいはRuby)の x オプションは
> 意味が違うのでしょうか?
> ereg_*() でも REG_EXTENDED というオプションを付けています。

Ruby は Emacs 用に書かれた rms のコードを元にしていて、
Perl と PHP のものは、4.4 BSD 時代に書かれた Henry Spencer の regex が元の
ようです。
だから、パラメータの解釈が違うのは仕方が無いようです。

> また、POSIX準拠を目標にするなら、今のライブラリが適切なのか
> を検討してみる必要があると思います。
> 文字クラスとロケールの関係とか、いろいろあると思います。

これに関しては、posix 準拠というわけではありませんが、
perl がデファクトスタンダードなことを考えると、
廣川さんが以前
http://ns1.php.gr.jp/pipermail/php-dev/2002-January/000197.html
上記のようなことをおっしゃっていたみたいですし、
mbstring を pcre に対応させる方向を検討してみるのも一つの道かと思います。

さて、話を戻しますと、
私は mb_split と mb_ereg に関しては、拡張モードにしない方向を望みます。

また、mb_ereg_replace や mb_ereg_match のように、
オプションが指定できる関数に関しては、
デフォルトで拡張モードにならないようにした方がよいと思うのですが。
いかがでしょうか?