[PHP-doc 617] Re: [PHP-dev 1224] Re: Re: mb_strpos
Seiji Masugata
s.masugata @ digicom.dnp.co.jp
2006年 2月 27日 (月) 20:33:37 JST
桝形です。
> > > 2.(ちょっと無理があるけど(^^;) (1) を仕様と考えるなら、マニュア
> > > ルに PHP4 と PHP5 じゃ動作が違うよって書く。
> >
> > 正解は2だと思うのですが。
> >
> > (PHP4での)strrpos関数とmb_strrpos関数は仕様が元々違っています。
> >
> > http://jp2.php.net/strrpos
> >
> > 注意: PHP 5.0.0 以降、needle は 1 文字以上の文字列を指定可能です。
> >
> > とあるので(PHP5から)strrposの仕様が変わっています。
> > (mb_strrpos関数と同じ仕様になった)
>
> そのとおりでしょうね。
> PHP 5 のソースアーカイブに含まれる「README.PHP4-TO-PHP5-THIN-CHANGES」
> というファイルの先頭にも、しっかりこのことが書かれています。
> > 1. strrpos() and strripos() now use the entire string as a needle. Be aware
> > that the existing scripts may no longer work as you expect.
http://jp2.php.net/strrpos
よく見てみると、第3引数([, int offset])が追加されています。
しかし、mb_strrpos関数では、
http://jp2.php.net/mb_strrpos
int mb_strrpos ( string haystack, string needle [, string encoding] )
と、なっているので、mbstring.func_overloadでstrrpos関数をオーバー
ロードした時に、引数の意味合いが変わってしまいますね。
needleの仕様はともかく、offsetの動作が変わるのは。。。という気がします。
mbstring.func_overloadを仕様として残すのであれば、mb_strrpos関数側で
何かしらの対応は必要だと思います。
--
Seiji Masugata <s.masugata @ digicom.dnp.co.jp>
PHP-doc メーリングリストの案内