[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 メーリングリストの案内