|
View:
New views
20 Messages
—
Rating Filter:
Alert me
|
| < Prev | 1 - 2 | Next > |
|
|
|
|
|
|
|
|
[PHP-dev 1224] Re: [PHP-doc 612] Re: mb_strpos高木です。
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@... _______________________________________________ PHP-dev mailing list PHP-dev@... http://ns1.php.gr.jp/mailman/listinfo/php-dev |
|
|
[PHP-dev 1225] Re: [PHP-doc 612] Re: mb_strpos桝形です。
> > > 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@...> _______________________________________________ PHP-dev mailing list PHP-dev@... http://ns1.php.gr.jp/mailman/listinfo/php-dev |
|
|
[PHP-dev 1226] Re: [PHP-doc 617] Re: Re: Re: mb_strpos 上鍵です.こんにちは.
なるほど.非常にややこしい話を掘り起こしてしまった感じで困り ました(苦笑 とりあえず PHP 5 からは第 3 引数(とマルチバイト処理) を除きほぼ互換性はある,しかし依然 override には問題がる(問題が あることが前提の仕様で OK)ということですよね. -- ----.----1----.----2----.----3----.----4----.----5----.----6----.----7 Tadashi Jokagi/Setagaya city mailto:elf@... YokukitanaII http://elf.no-ip.org/ Yokukitablog http://blog.poyo.jp/ Yokukitawiki http://wiki.poyo.jp/ _______________________________________________ PHP-dev mailing list PHP-dev@... http://ns1.php.gr.jp/mailman/listinfo/php-dev |
|
|
[PHP-dev 1268] Re: [PHP-doc 612] Re: mb_strpos桝形です。
しばらく放置していた以下の件ですが、そろそろ何とかしたいと 思っています。 次のリリースは「5.2.0」ですので、タイミング的には問題無いと 思います。 今の状態では「mbstring.func_overload」を利用しなければ実質的に 問題はありませんが、mbstringで提供している文字列関数はstring関数 のマルチバイト対応版だと思っているので、引数は併せておいた方が よいように思えます。 追随できていなかったのが原因なので、潔く「mb_strrpos」関数の 引数を「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@...> _______________________________________________ PHP-dev mailing list PHP-dev@... http://ns1.php.gr.jp/mailman/listinfo/php-dev |
|
|
[PHP-dev 1269] Re: [PHP-doc 612] Re: mb_strposあさかわ
> 次のリリースは「5.2.0」ですので、タイミング的には問題無 > いと > 思います。 下記が出来るのならいんだけど。そうじゃなければ、6.xまで まった方が。 > 今の状態では「mbstring.func_overload」を利用しなければ実 > 質的に > 問題はありませんが、mbstringで提供している文字列関数は > string関数 > のマルチバイト対応版だと思っているので、引数は併せておいた方が > よいように思えます。 問題として、大々的に表面化してないってことは、overloadして ない人が多いのだと思う。 たぶん、mb系は、明示的につかってると思う。ねえ、上鍵さん (笑) > 追随できていなかったのが原因なので、潔く「mb_strrpos」関 > 数の > 引数を「strrpos」関数の引数に併せたいと思っていますが、 > 妙案 > ありましたら、教えて下さい。 A:案 overloadされてるなら, ( string haystack, string needle [, int offset] ) overloadされてないなら、( string haystack, string needle [, string encoding] ) B:案 overloadされてるなら, ( string haystack, string needle [, int offset] ) overloadされてないなら、( string haystack, string needle [, string encoding [, int offset ]] ) C:案 overloadされてるなら, ( string haystack, string needle [, int offset [, string encoding]] ) overloadされてないなら、( string haystack, string needle [, string encoding [, int offset ]] ) D:案 第3引数の型が、intなら, ( string haystack, string needle [, int offset] ) 第3引数の型が、stringなら、( string haystack, string needle [, string encoding] ) E:案 第3引数の型が、intなら, ( string haystack, string needle [, int offset [, string encoding]] ) 第3引数の型が、stringなら、( string haystack, string needle [, string encoding [, int offset ]] ) なんてのはどうでしょう。 A案、B案はoverloadしてる場合はencoding指定して ないだろうという想定 _______________________________________________ PHP-dev mailing list PHP-dev@... http://ns1.php.gr.jp/mailman/listinfo/php-dev |
|
|
[PHP-dev 1270] Re: [PHP-doc 612] Re: mb_strpos桝形です。
> 下記が出来るのならいんだけど。そうじゃなければ、6.xまで > まった方が。 いつリリースされるか分からないバージョンまで問題を先送りする のは(色んな意味で)厳しいのかと。。。 # いつ爆発するか分からない爆弾を抱え込んだ状態。 > 問題として、大々的に表面化してないってことは、overloadして > ない人が多いのだと思う。 後、考えられるのが、第3引数を利用していない人が多い。 (mb_strrpos, strrpos共に) > たぶん、mb系は、明示的につかってると思う。ねえ、上鍵さん > (笑) 明示的につかってる、というのは第3引数をって事でしょうか。 > A:案 overloadされてるなら, ( string haystack, string > needle [, int offset] ) > overloadされてないなら、( string haystack, string needle > [, string encoding] ) > B:案 overloadされてるなら, ( string haystack, string > needle [, int offset] ) > overloadされてないなら、( string haystack, string needle > [, string encoding [, int offset ]] ) > C:案 overloadされてるなら, ( string haystack, string > needle [, int offset [, string encoding]] ) > overloadされてないなら、( string haystack, string needle > [, string encoding [, int offset ]] ) > D:案 第3引数の型が、intなら, ( string haystack, string > needle [, int offset] ) > 第3引数の型が、stringなら、( string haystack, > string needle [, string encoding] ) > E:案 第3引数の型が、intなら, ( string haystack, string > needle [, int offset [, string encoding]] ) > 第3引数の型が、stringなら、( string haystack, > string needle [, string encoding [, int offset ]] ) コレら全ては当初は考えていましたが、正直そこまでして救うべきか ちょっと疑問視しています。 元々、真ん中のバージョンが上がった時点で互換性は保障できない 訳でして(元々追随できていなかったのが原因な訳で)。 ただ、mbstringを利用している全てのユーザーが第3引数を 利用しているのであれば検討する価値は凄くあると思います。 -- Seiji Masugata <s.masugata@...> _______________________________________________ PHP-dev mailing list PHP-dev@... http://ns1.php.gr.jp/mailman/listinfo/php-dev |
|
|
[PHP-dev 1271] Re: [PHP-doc 612] Re: mb_strposあさかわ
> いつリリースされるか分からないバージョンまで問題を先送りする > のは(色んな意味で)厳しいのかと。。。 > > # いつ爆発するか分からない爆弾を抱え込んだ状態。 たしかにそうですが、PHP-5は、i18のエイリアスがなく なったり それでなくても、PHP-4からの移行が難しいのですよ。 >> 問題として、大々的に表面化してないってことは、overload >> して >> ない人が多いのだと思う。 > > 後、考えられるのが、第3引数を利用していない人が多い。 > (mb_strrpos, strrpos共に) > mb_ では、encoding指定をつかってると思う。 私は、php.iniで設定する派ですが。 php.iniでは、設定するベキではないという派閥もあるのです その場合、encoding指定を直接してると思う。 ただ、その派閥は、overloadはしていないと思う、 oveloadする人は、外国版のソフトをつかう人だと思うから。 > >> たぶん、mb系は、明示的につかってると思う。ねえ、上鍵さん >> (笑) > > 明示的につかってる、というのは第3引数をって事でしょうか。 いえ、overloadしてないという意味。 > > コレら全ては当初は考えていましたが、正直そこまでして救うべきか > ちょっと疑問視しています。 まあそうなのだけど、余計な混乱させない方法があるならその方がいい と思う どんどん、PHPを使う人のレベルは下がってるのだから。 > ただ、mbstringを利用している全てのユーザーが第3引数を > 利用しているのであれば検討する価値は凄くあると思います。 すべてではないでしょうけど、すこしでもいる可能性があったら すくなくとも、mb_xxx直接の場合は、互換取るべきだと思う。 encoding指定が、ofsset指定に変わってしまったら 動作が明らかに変になるわけでして。 たぶん、usersに、繰り返し質問が来ると思う。 で、個人的には、overloadしてる人は encoding指定は、してないと思う。 oveloadする人は、外国版のソフトをつかう人だと思うから。 自分で新規に書いてる人は、mb_xxをつかっているとおもう。 なので、oveloadしてるかしてないかで、引数をかえる方法がい いと思っています。 _______________________________________________ PHP-dev mailing list PHP-dev@... http://ns1.php.gr.jp/mailman/listinfo/php-dev |
|
|
[PHP-dev 1272] Re: [PHP-doc 612] Re: mb_strpos ぢょ〜@よくきたなです.
Tomoyuki Asakawaさんの「[PHP-dev 1269] Re: [PHP-doc 612] Re: mb_strpos」から >問題として、大々的に表面化してないってことは、overloadして >ない人が多いのだと思う。 >たぶん、mb系は、明示的につかってると思う。ねえ、上鍵さん >(笑) そこで指定されるのは当てつけっぽいですが(苦笑 overload は最近 は使用される場面は少なくなっていると思います.理由は下記の通り ・設定値次第で画像処理などバイナリ処理系で誤動作を起こす可能性が 高くなる ・FAQ 的に紹介されるケースが少なくなった >> 追随できていなかったのが原因なので、潔く「mb_strrpos」関 >> 数の >> 引数を「strrpos」関数の引数に併せたいと思っていますが、 >> 妙案 >> ありましたら、教えて下さい。 > >A:案 overloadされてるなら, ( string haystack, string >needle [, int offset] ) > overloadされてないなら、( string haystack, string needle >[, string encoding] ) >B:案 overloadされてるなら, ( string haystack, string >needle [, int offset] ) > overloadされてないなら、( string haystack, string needle >[, string encoding [, int offset ]] ) >C:案 overloadされてるなら, ( string haystack, string >needle [, int offset [, string encoding]] ) > overloadされてないなら、( string haystack, string needle >[, string encoding [, int offset ]] ) >D:案 第3引数の型が、intなら, ( string haystack, string >needle [, int offset] ) > 第3引数の型が、stringなら、( string haystack, >string needle [, string encoding] ) >E:案 第3引数の型が、intなら, ( string haystack, string >needle [, int offset [, string encoding]] ) > 第3引数の型が、stringなら、( string haystack, >string needle [, string encoding [, int offset ]] ) > >なんてのはどうでしょう。 >A案、B案はoverloadしてる場合はencoding指定して >ないだろうという想定 overload される mb_strpos() 的な処理を通常の mb_strpos を 2 系統 用意するのはだめでしょうか? 実際は function mb_strpos() { ...} function mb_strpos_overload(...) { mb_strpos( ...)} みたいな感じで.というか overload の処理を見ずにに書いていますが(苦笑 -- ----.----1----.----2----.----3----.----4----.----5----.----6----.----7 Tadashi Jokagi/Shibuya city mailto:elf@... YokukitanaII http://elf.no-ip.org/ Yokukita blog http://blog.poyo.jp/ Yokukita wiki http://wiki.poyo.jp/ _______________________________________________ PHP-dev mailing list PHP-dev@... http://ns1.php.gr.jp/mailman/listinfo/php-dev |
|
|
[PHP-dev 1273] Re: [PHP-doc 612] Re: mb_strpos ぢょ〜@よくきたなです.
overload は使用している人が少ないだろうという続きとして書き ます. Tomoyuki Asakawaさんの「[PHP-dev 1271] Re: [PHP-doc 612] Re: mb_strpos」から >> 後、考えられるのが、第3引数を利用していない人が多い。 >> (mb_strrpos, strrpos共に) >> > >mb_ では、encoding指定をつかってると思う。 >私は、php.iniで設定する派ですが。 >php.iniでは、設定するベキではないという派閥もあるのです >その場合、encoding指定を直接してると思う。 いいえ.通常スクリプトで指定する場合,mb_internal_encoding() を 指定するだけなので,基本的に関数毎のエンコーディング指定をする必 要は一切ありません.例外として一時的に自体文字エンコーディングを 変換なしに扱いたい場合は指定することもあると思います.こういう処 理を書きたい場合,php.ini であろうがどういう初期設定を行ったかと しても関数で文字エンコーディングの指定をする場合はあるでしょう. また,よく見かけるのは「mbstring の動作がよくわからない」から 全部の関数で文字エンコーディングの指定をする場合.これは php.ini で指定しようがしまいがやるようです. >ただ、その派閥は、overloadはしていないと思う、 >oveloadする人は、外国版のソフトをつかう人だと思うから。 どうなんでしょうね.overload しているソフトウェアは数十見てみた 程度ではほとんど見かけません. >で、個人的には、overloadしてる人は >encoding指定は、してないと思う。 > >oveloadする人は、外国版のソフトをつかう人だと思うから。 >自分で新規に書いてる人は、mb_xxをつかっているとおもう。 上記通り一概に言えません. -- ----.----1----.----2----.----3----.----4----.----5----.----6----.----7 Tadashi Jokagi/Shibuya city mailto:elf@... YokukitanaII http://elf.no-ip.org/ Yokukita blog http://blog.poyo.jp/ Yokukita wiki http://wiki.poyo.jp/ _______________________________________________ PHP-dev mailing list PHP-dev@... http://ns1.php.gr.jp/mailman/listinfo/php-dev |
|
|
[PHP-dev 1274] Re: [PHP-doc 612] Re: mb_strpos ぢょ〜@よくきたなです.
Tomoyuki Asakawaさんの「[PHP-dev 1271] Re: [PHP-doc 612] Re: mb_strpos」から >たしかにそうですが、PHP-5は、i18のエイリアスがなく >なったり >それでなくても、PHP-4からの移行が難しいのですよ。 ちなみに i18n な関数は *PHP 4 の時点で* 正式関数群ではなく, 2000 年に公開された PHP 4.0.6 で正式に mbstring が提供された歴史 を考えるとPHP 5 への移行で *一般的に* はまるというポイントにはな りえないと思います. #そりゃ由緒ただしき歴史のあるプロダクトはあてはまるでしょうけど 5 年 以上前のままの実装で未だ…かつ PHP 5 へ移行を検討するほどのものって のは 10 パーセントもないと思います. -- ----.----1----.----2----.----3----.----4----.----5----.----6----.----7 Tadashi Jokagi/Shibuya city mailto:elf@... YokukitanaII http://elf.no-ip.org/ Yokukita blog http://blog.poyo.jp/ Yokukita wiki http://wiki.poyo.jp/ _______________________________________________ PHP-dev mailing list PHP-dev@... http://ns1.php.gr.jp/mailman/listinfo/php-dev |
|
|
[PHP-dev 1275] Re: [PHP-doc 612] Re: mb_strposあさかわ
On 2006/06/05, at 14:21, Tadashi Jokagi wrote: > ちなみに i18n な関数は *PHP 4 の時点で > * 正式関数群ではなく, > 2000 年に公開された PHP 4.0.6 で正式に > mbstring が提供された歴史 > を考えるとPHP 5 への移行で *一般的に* は > まるというポイントにはな > りえないと思います. ところがね、PHP3で書いてあったものを、PHP4にする時、 i18nはそのままになっているというものを 何本かみたです。(自分のもあるし、人のもある) _______________________________________________ PHP-dev mailing list PHP-dev@... http://ns1.php.gr.jp/mailman/listinfo/php-dev |
|
|
[PHP-dev 1276] Re: [PHP-doc 612] Re: mb_strposあさかわ
> また,よく見かけるのは「mbstring の動作がよくわか > らない」から > 全部の関数で文字エンコーディングの指定をする場合.これは > php.ini > で指定しようがしまいがやるようです. > という意味でも、encoding指定をしてる、よくわからない人の為 にも 既存の順序を替えてはだめでしょう。 > どうなんでしょうね.overload しているソフトウェア > は数十見てみた > 程度ではほとんど見かけません. > >> で、個人的には、overloadしてる人は >> encoding指定は、してないと思う。 >> >> oveloadする人は、外国版のソフトをつかう人だと思うから。 >> 自分で新規に書いてる人は、mb_xxをつかっているとおもう。 > > 上記通り一概に言えません. overloadしてるソフトは、ほとんど無いという前提で いたとしても、それは、外国ソフトの移植だろう。 自分で、新規に書いてる人は、mb_xxをつかってるだろうという。 意味です。 一概に言えないといってると、答えは収束しないです。 _______________________________________________ PHP-dev mailing list PHP-dev@... http://ns1.php.gr.jp/mailman/listinfo/php-dev |
|
|
[PHP-dev 1277] Re: [PHP-doc 612] Re: mb_strpos小山です。
On 6/5/06, Tomoyuki Asakawa <tom@...> wrote: > oveloadする人は、外国版のソフトをつかう人だと思うから。 > 自分で新規に書いてる人は、mb_xxをつかっているとおもう。 > > なので、oveloadしてるかしてないかで、引数をかえる方法がい > いと思っています。 overload しているかどうかという外部要因で、その関数の動作が変わ るのは私は好ましくないと思います。 基本は int mb_strpos ( string haystack, string needle [, int offset [, string encoding]] ) にしておいて、第4引数がない && 第3引数が文字列 という条件の場合 のみ、互換性のために int mb_strpos ( string haystack, string needle, string encoding) という動作をするというのはどうでしょうか。 引数の型チェックがないという PHP の柔軟性を生かすべきだと思います。 -- 小山哲志@ビート・クラフト koyama@... koyama@... _______________________________________________ PHP-dev mailing list PHP-dev@... http://ns1.php.gr.jp/mailman/listinfo/php-dev |
|
|
[PHP-dev 1278] Re: [PHP-doc 612] Re: mb_strpos桝形です。
> > ちなみに i18n な関数は *PHP 4 の時点で > > * 正式関数群ではなく, > > 2000 年に公開された PHP 4.0.6 で正式に > > mbstring が提供された歴史 > > を考えるとPHP 5 への移行で *一般的に* は > > まるというポイントにはな > > りえないと思います. 同意見で、PHP3からPHP5への移行はmbstring的には既に サポート外という認識でいます。 http://ns1.php.gr.jp/pipermail/php-dev/2003-March/000730.html サポート外というか、役割は充分に果たしたのかな、と。 -- Seiji Masugata <s.masugata@...> _______________________________________________ PHP-dev mailing list PHP-dev@... http://ns1.php.gr.jp/mailman/listinfo/php-dev |
|
|
[PHP-dev 1279] Re: [PHP-doc 612] Re: mb_strpos |