2007年02月08日

php:バイト数の取得(strlen は mb_strlen にオーバーロードされる)

strlen が mb_strlen にオーバーロード(置換)されてしまっている場合でも支障なくデータのバイト数を取得する方法です。

環境によっては strlen は ms_strlen にオーバーロードされているんですが(マニュアル:XCIV. マルチバイト文字列関数)、そんな場合、データのバイト数を取得するのに通常はどうするのでしょう?

$volm = strlen(bin2hex($data)) / 2;

$data:バイト数を取得したいデータ
$volm:データ長(byte)

これでマルチバイトのテキストでも画像でも、バイト数を取得できます。当たり前ですが。
ちなみに関数のオーバーロードに関する設定(mbstring.func_overload)は、ユーザスクリプトからはできません。php.ini か .htaccess、httpd.conf で設定可能です。

ずっとこれで通してきてます。
んが。実は、一般的な手法を知りたかったんですが、調べてもちょっと見つからなかったので、私なりのやり方です。
うーん。普通にコア関数があるのだろうか、見落としてるハズないんだけどなぁ。
posted by HiFa at 11:54 | 🌁 | Comment(0) | TrackBack(1) | ときどきPHP | このブログの読者になる | 更新情報をチェックする
>>> スパムコメントは消してますよん。 お互い無駄な労力は避けましょう。 <<<

この記事へのコメント

コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/33192046
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック

日本語文字列のバイト数取得にstrlenだけではダメな理由-PHP
Excerpt: 日本語(マルチバイト)の処理において、その文字数ではなく、バイト数を取得したい場合があります。マルチバイトは必ずしも1文字2バイトとは限らず、EUC-JPでは概ね2バイトだけど特殊文字で3バイトの場合..
Weblog: CPA-LABテクニカル
Tracked: 2008-06-25 17:33
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。