[PHP-dev 1289] Re: [PHP-doc 612] Re: mb_strpos

Tomoyuki Asakawa tom @ asakawa.ne.jp
2006年 6月 5日 (月) 18:06:11 JST


あさかわ

> と言う認識でいると思うので、小山さんが発言した内容の通り、

> 基本的には
>
> int mb_strpos ( string haystack, string needle [, int offset [,  
> string encoding]] )
>
> にするべきだと思います。

確かに、そうなのですが。

int mb_strpos ( string haystack, string needle [, string  
encoding] ) 5.1系
int mb_strpos ( string haystack, string needle [, int offset [,  
string encoding]] ) 5.2系

という、真ん中がかわったら別物とは行っても、こういう混乱はやは 
り、嫌ですね。

#ただ、そもそも、自分は、ここにencodingは書かないからいい 
のだけど。
#(人から貰うってのはあり得るし)

>>>> mbstringで提供している文字列関数はstring関数
>>>> のマルチバイト対応版だと思っているので、引数は併せておいた 
>>>> 方が
>>>> よいように思えます。
>>>>

というのは間違いなく正論なので。

いっそのこと、overload可能な関数群は。encoding指定を 
仕様からはずしてしまったらどうですか?

特殊な場合で、internalじゃないencodingを使う場合は
mb_internal_encoding() を、途中で入れればいいわけですし。

そうすれば、今後本家でパラメータの個数が変わっても、問題は起きな 
い。

いつでるかわからないとは言っても、6の仕様が美しくなる。


>       また,よく見かけるのは「mbstring の動作がよくわか
>
>> らない」から
>>     全部の関数で文字エンコーディングの指定をする場合.これは
>> php.ini
>>     で指定しようがしまいがやるようです.
>

この場合も、実際は、internalencodingを書いてるはずです。
仕様として、5.2から、encodingを書けなくすればいいと 
思う。

第3引数に、stringが来たら、encodingとして動作するの 
ではなく
エラーにしてしまえば、すくなくとも、誤動作はしないわけですし
えらーを片っ端から修正すればいいだけになる。
















PHP-dev メーリングリストの案内