[PHP-dev 1555] mbflが扱える文字列の制限

Yasuo Ohgaki yohgaki @ ohgaki.net
2016年 3月 29日 (火) 19:00:27 JST


大垣です。

自分もここをあまり見ていないのですが、一応投稿します。

ブログに文字列型の制限部分を書きました。
http://blog.ohgaki.net/php-limits

PHP7.0以上で64ビットOSの場合

最大長は符号無し64ビット整数の最大値と同じ。最大2^64(実質的には無制限)
た だし、mbstringが取り扱える最大文字列長は2^32に制限される(libmbflの文字列長定義にunsigned
intが利用されているため)しかし、mbstringが利用するlibmbflのAPIはパラメータにint型(符号付き整数)を利用している。この
為、4GBまでの文字列が保存できるが、文字列操作は2GBまでしかできない場合がある。

libmbflが文字列を保存する構造体はuintで長さを保存し、APIはintを利用しています。PHP
7より古いPHPはこれで十分でしたが、これらをsize_tに変更する必要があります。。。

--
Yasuo Ohgaki
yohgaki @ ohgaki.net


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