[PHP-doc 616] Re: [PHP-dev 1223] Re: Re: mb_strpos
TAKAGI Masahiro
matakagi @ osk2.3web.ne.jp
2006年 2月 27日 (月) 12:50:50 JST
高木です。
At Sun, 26 Feb 2006 13:49:30 +0900,
Seiji Masugata wrote:
>
> > 1.mb_strrpos() は PHP4 ではバグってる。
> > 2.(ちょっと無理があるけど(^^;) (1) を仕様と考えるなら、マニュア
> > ルに PHP4 と PHP5 じゃ動作が違うよって書く。
>
> 正解は2だと思うのですが。
>
> (PHP4での)strrpos関数とmb_strrpos関数は仕様が元々違っています。
> (PHP3での)strrpos関数とmbstrrpos関数も同様に、です。
>
> 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.
>
> EX :
> <?php
> var_dump(strrpos("ABCDEF","DEF"));
> var_dump(strrpos("ABCDEF","DAF"));
> ?>
>
> Will give you different results. The former returns 3 while the latter
> returns false rather than the position of the last occurrence of 'D'.
> The same applies to strripos().
--
高木 正弘 mailto:matakagi @ osk2.3web.ne.jp
PHP-doc メーリングリストの案内