てきとうなさいと べぇたばん

鬼車のメンテナンスが終了していました。そしてPHPではmb_ereg系の関数に影響があります。

TOP > てきとうにこらむ > ゲーム作りとプログラミング日記 > 鬼車のメンテナンスが終了していました。そしてPHPではmb_ereg系の関数に影響があります。

Oniguruma was archived by the owner on Apr 24, 2025. It is now read-only.

鬼車(Oniguruma)のメンテナンスが終了してた

去る2025年4月24日に、鬼車のメンテナンスが終了しました。

https://github.com/kkos/oniguruma

PHPではどう影響が出る?

mb_ereg系の関数が鬼車を使っています。したがって、鬼車のメンテナンスが終わるということは、この関数の将来を決めなければならないということでもあります。

鬼車はどうやって使ってたの?

過去のPHPでは、鬼車をphp-srcごと内蔵していました。それがPHP 8系かなにかで pkg-config での外部ライブラリ化がされたため、鬼車そのものはphp-srcからは消えていました。

現在では例えばDebian系のLinuxならば lib-onig だったっけか?を入れないと mb_ereg 系の関数は使えません。

この手が使えはしますが、過去CVEを出したこともあって大変だったはずで、それを引き継いでまでやるの?ってなると保守コストが高いですね…

PCREでよくね?

preg_match をはじめとした、PCRE関数で事足りるのでは?と大体の方は思うのかなと思います。個人的には確かにそれでいいような気もしていますが、ちょっと読めないです。

文字コードごとに違う、「ひらがな」の範囲

というのは、文字コードという単位で見ると、「ひらがなの範囲」というだけでバラバラですよね。

例えばUTF-8ではこうです。

[ぁ-ゞ]

しかし、EUC-JPではこうです。参考: https://phpspot.net/php/pg%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE%EF%BC%9A%E3%81%99%E3%81%B9%E3%81%A6%E3%81%B2%E3%82%89%E3%81%8C%E3%81%AA%E3%81%8B%E3%81%A9%E3%81%86%E3%81%8B%E8%AA%BF%E3%81%B9%E3%82%8B.html

[あ-ん゛゜ぁ-ぉゃ-ょー]

Shift_JISではかろうじて以下です。(でも、EUC-JPと同じJIS X 0208が収録されてるのに…まあこっちはJISをシフトしてるからね)

[ぁ-ん]

PHPではどうなる?

鬼車ではこのような内容を吸収?していたと思われます。どうなんだろ。とにかくとして、これほどの関数群をPHP 8.5でDeprecatedとし、PHP 9で使えなくするのか、それとも使えるように鬼車を再収録してメンテナンスを引き継ぐのかという点がとても心配になってしまいました。

なお、Rubyでは鬼車のフォーク版、鬼雲を使用してバックポートを行っているはずです(よね?)(Rubyに詳しい人来てくれー)

ただし、鬼雲の最後のリリースを見てみると、Unicode 11.0であり、鬼車のUnicode 16.0に及びません。このことから、鬼雲を使用するというのは現実的ではないのでしょう。

まとめ

とりあえず、PHPでは mb_ereg 系の関数の行方がわからなくなってしまったということになります。日本語を扱う上ではこれらの関数のお世話になっている方はちょっとユースケースを教えてほしいかなと思いました。

確かに、PCRE系関数を使えばいいのかもとも思いますが、本当にユースケースがわからないので情報がほしいところです。

2025/04/30 23:09