PHPカンファレンス 2022で登壇してきました & mb_strposのバグを踏んだ
TOP > てきとうにこらむ > ゲーム作りとプログラミング日記 > PHPカンファレンス 2022で登壇してきました & mb_strposのバグを踏んだ
PHPカンファレンス 2022で登壇してきました
PHPカンファレンス2022に登壇してきました。トークのスライドは以下になります。
https://speakerdeck.com/youkidearitai/zhi-tuteikumbstring-shi-dai-nowen-zi-hua-ke
今回もオンラインで
最近だともうそろそろオフラインでも大丈夫そうかもということで、PHPカンファレンスもハイブリッドでしたね。ぼくは残念ながらいろいろな理由でオンラインとなりました。
特にmbstringという、RFCで話をせずにMajor overhaul of mbstringというプルリクエストのみという話だったため、情報交換がほしいところだったので惜しいことをしてしまいました…今度こそよろしくおねがいします。
まさかの廣川さんに拾ってもらう
PHPの今とこれから2022 PHP Conference Japan 2022
ビビってしまったのですが、mbstringのコントリビューターでもある廣川さんにもPHP 8.2の話をしているにも関わらずPHP 8.1のmbstringのSJISの修正の件が触れられ、更には「くわしくはてきめんさんのスライドへ」とまで名指しで紹介されるということまでありました。それほどMajor overhaul of mbstringの影響範囲が大きすぎる&誰もわかっていなかったということなんですが(わかってたら2021の8.1の新機能で話してたはず)、いや、まさか…っていう感じです。とんでもないことをしてしまったなあ
このことはPHP重鎮の廣川類氏によるコラム「PHPの最新状況:PHP 8.2採用の機能が決まる」(第25回)にもあったので、もしかするとこの件触れるかって思って見てましたがガッツリ触れてましたね…
実はブログどころではなかった
mb_substitute_character
の影響範囲について
あのですね、連休中に mb_strcut
がどうして mb_substitute_character
の影響を受けないの?っていう話をトーク中でもしてたと思うんですが、mb_substitute_character
の影響範囲を調べていました。そうすると、どうやら mb_substitute_character
の影響範囲はマニュアルを超えていたことがわかりました。
-
mb_convert_case
-
mb_strtoupper
-
mb_strtolower
-
mb_stripos
3v4lでも試してみてください: https://3v4l.org/EfRD5
mb_strpos
と mb_stripos
が実は
mb_substitute_character
のことを調べているうちに、ソースを読んでいくと「mb_strpos
って不正な文字バイトをぶっこんだらなんかおかしいことにならないか?」ってなってしまい、調べたらバグってました。バグの指摘をしたら「それは文字エンコーディングが違うから」という理由で一回closeされ、「お願いだ、これを読んでくれ」って感じでイリーガルなバイト列を生成して ?
がマッチするケースを作成してReOpenしてもらうという事件があってハラハラものでした。
mb_strpos
matches illegal character when needle is '?' #9613
ちなみに、これをライブ配信してたわ。
みんなでmbstringの沼に沈もうぜ!
バグ報告をPHPカンファレンスの翌日にやっていたせいで、ブログどころではありませんでした。とりあえずmbstringの沼に沈みませんか?