[PHP-dev 894]Re: mb_ereg_replaceについて
kkosako @ softbank.co.jp
kkosako @ softbank.co.jp
2003年 9月 29日 (月) 14:50:20 JST
帰省中、MLをoffにしていたので、メールのリンクが切れています。
> さて、PHP_4_3 ブランチでの無限ループ問題はどうやら Ruby regex の仕様もしく
> はバグのような気がします。
私もバグだと思います。
あまり自信はないのですが、パッチを添付します。
ruby-dev MLにも送ってみますが、Rubyでは問題ないということで
放置されるかもしれません。
> もっとも、実際の Ruby では、SINGLELINE オプションと MULTILINE オプションの
> 組み合わせはもはや出来ないようですので (前は出来たような気がするんですが気
> のせい?)、結局は PHP 固有の問題ということになります。
CVSで確認してみると、去年の四月頃にPOSIXLINEオプションが
除去されていました。
理由は知らないのですが、Rubyには不必要な機能と判断されたのでは
ないかと思います。
> そもそもこの組み合わせ自体が間違いなのか何なのかは、正規表現に疎い私にはわ
> かりません。どなたか詳しい方、ご教示ください。
SINGLELINE オプションと MULTILINE オプションの組み合わせが間違い、ということ
は
ないと思います。
--
小迫@出向中
--- regex.c.old 2003-09-17 02:37:33.000000000 +0900
+++ regex.c 2003-09-29 14:41:37.000000000 +0900
@@ -3196,7 +3196,7 @@ re_search(bufp, string, size, startpos,
}
}
if (bufp->options & RE_OPTIMIZE_ANCHOR) {
- if (bufp->options&RE_OPTION_SINGLELINE) {
+ if (bufp->options&RE_OPTION_MULTILINE && range > 0) {
goto begbuf_match;
}
anchor = 1;
PHP-dev メーリングリストの案内