[PHP-dev 519] Re: [Fwd: Japanese: mb_split broken?]
Moriyoshi Koizumi
php-dev@php.gr.jp
Wed, 02 Oct 2002 16:55:51 +0900
小泉です。
> 変更するなら今すぐした方がよいと思います。
> # 基本的にはereg_*()と同じ動作に変更した方が解り易い、
> # オーバーロードした時に便利と思います。
>
> この変更で困るという方もいると思いますが、どうでしょうか?
なぜデフォルトで拡張モードになっていたのか、
そこが非常に不思議なところですが、
http://www.ruby-lang.org/ja/man-1.4/syntax.html#regexp
によると、拡張モードでは、
・# test のようにコメントがつけられる
・white space, 改行コード, '\f' が無視される
とのことなので、
<?php
$pat = <<< HERE
# comment
# comment
abc
HERE;
var_dump( mb_ereg( $pat, 'abcdef' ) );
?>
のようなコードでは、拡張モードが on でなくなると、混乱を生じます。
mb_ereg_match() や mb_ereg_replace() のように、オプションが指定できる関数
なら、おそらく使われている方の大多数は、オプションを空に指定されていると思
います。
一方で、mb_ereg() や mb_split() のように、正規表現オプションを指定できない
ものだと、拡張モードになっている旨はドキュメントにも触れられていないので、
ユーザの方がバグと考えても仕方がないでしょう。
したがって、BC のことを考えて少し慎重になるとすれば、
mb_ereg() と mb_split() だけ、拡張モードを off にするのがよいかと
思われます。
いかがでしょうか?
# 一度 users で調査してもいいかもしれませんね