関数・クラス解説

unpack

version:PHP 4, PHP 5, PHP 7 (公式)

バイナリ文字列からデータを切り出す

公式リファレンス

書式

unpack ( string $format , string $data [, int $offset = 0 ] ) : array|false

説明

format に基づき、バイナリ文字列から配列に分解します。

分解した結果は連想配列に格納されます。 このようにするには、別のフォーマットコードを使用してそれらを スラッシュ / で区切る必要があります。 引数にリピータが含まれる場合の配列の要素名は、 指定した名前の後に順番に番号がついたものとなります。

パラメータ

format
書式コードの説明は pack() を参照ください。
data
パックされたデータ。
offset
データ切り出しを開始するオフセット。

返値

バイナリ文字列を切り出した要素を含む連想配列を返します。失敗した場合に FALSE を返します

注意

警告 PHP は内部的に整数を符号付きで保持することに注意しましょう。 大きな値の unsigned long を切り出した場合、PHP の内部で保持された値は、 同じ大きさの符号付き整数となり、符号無しを指定して切出された場合でも 結果は負の数となります。 警告 要素に名前をつけなければ、1 から始まる数値インデックスを用います。 名前をつけない要素が複数ある場合は、データが上書きされてしまうかもしれないことに注意しましょう。 それぞれの要素について、数値インデックスが 1 から割りあてられるからです。 例3 unpack() で名前のないキーを扱う例 <?php$binarydata = "\x32\x42\x00\xa0";$array = unpack("c2/n", $binarydata);var_dump($array);?> 上の例の出力は以下となります。 array(2) { [1]=> int(160) [2]=> int(66)} c で指定した最初の値が n で指定した値で上書きされることに注意しましょう。

更新履歴

バージョン 説明
7.2.0 float および double 型は、 ビッグエンディアンとリトルエンディアンの両方をサポートします。
7.1.0 オプションの offset が追加されました。
5.5.0 Perl の関数に動きを近づけるための変更をしました。 "a" は最後の NULL バイトを維持するようになりました。 "A" は最後の ASCII 空白文字 (スペース、タブ、改行、キャリッジリターン、 NULL バイト) をすべて取り除くようになりました。 NULL 埋め文字列用に "Z" が追加されました。これは最後の NULL バイトを取り除きます。

サンプル

例1 unpack() の例

$binarydata = "\x04\x00\xa0\x00"; $array = unpack("cchars/nint", $binarydata); print_r($array);

上の例の出力は以下となります。

Array ( [chars] => 4 [int] => 160 )

例2 unpack() でのリピータの例

$binarydata = "\x04\x00\xa0\x00"; $array = unpack("c2chars/nint", $binarydata); print_r($array);

上の例の出力は以下となります。

Array ( [chars1] => 4 [chars2] => 0 [int] => 40960 )

参考

  • pack() - データをバイナリ文字列にパックする
  • ワード検索


    ※入力キーワードが、関数名・説明文・タグに含まれるものを検索

    関数名アルファベット別

    A B C D E F G H I J
    K L M N O P Q R S T
    U V W X Y Z _

    最終更新一覧

    stristr
     大文字小文字を区別せず文字列を検索し、ヒット箇所以降(あるいは以前)の文字列を返却

    stripslashes
     バックスラッシュでエスケープされた文字列から、バックスラッシュを取り除く

    stripos
     大文字小文字を区別せずに文字列が最初に現れる位置を取得する

    stripcslashes
     addcslashes() でクォートされた文字列をアンクォートする

    strip_tags
     文字列から HTML と PHP のタグを除去して返却

    strcspn
     指定した文字が最初に現れる位置を調べる

    strcoll
     ロケールに基づいて2つの文字列を比較し同じか(あるいは大小)を判定する

    strcmp
     2つの文字列を比較し同じか(あるいは大小)を判定する

    strchr
     strstr() のエイリアス

    strcasecmp
     2つの文字列を比較(大文字小文字を区別せず同じとみなす)

    カテゴリー一覧

    PHP の振る舞いの変更
    音声フォーマットの操作
    認証サービス
    コマンドライン関連
    圧縮およびアーカイブ
    暗号
    データベース関連
    日付および時刻関連
    ファイルシステム
    自然言語および文字エンコーディング
    画像処理および作成
    メール関連
    数学
    テキスト以外の MIME 型
    プロセス制御
    その他の基本モジュール
    その他のサービス
    検索エンジン用の拡張モジュール
    サーバー固有のモジュール
    セッション関連
    テキスト処理
    変数・データ型関連
    ウェブサービス
    Windows 用のモジュール
    XML 操作
    GUI用の拡張モジュール