関数・クラス解説

sscanf

version:PHP 4 >= 4.0.1, PHP 5, PHP 7 (公式)

文字列を指定したフォーマットに基づいて整形し返却する

フォーマット

array | int | null : sscanf ( string $str , string $format , mixed &...$vars )

パラメータ

string $str (必須)
入力文字列

string $format (必須)
フォーマット形式を指定する。sprintf()のフォーマットを参照してください。ただし、以下の違いがあります。

  • ロケールに対応していません。
  • F、g、G および b はサポートしていません。
  • D は十進数値を表します。
  • i は基数検出つきの整数値を表します。
  • n は処理する文字数を表します。
  • s は、空白文字を読み取ると停止することを示します。


mixed &...$vars (参照渡し)
変数を指定すると、フォーマットに基づいてパースされた値が格納される。

返値 array | int | null
通常は配列を返却しますが、mixed &...$vars(参照で渡された3つ目以降の引数)を指定した場合は、$vars で指定した引数の数が返されます。

解説

この関数は、指定した文字列(string $str)を、指定したフォーマット(string $format)に基づき解釈します。このフォーマットは、sprintf()のマニュアルを参照してください。

記述サンプル

//PHP 7.4.6で実行
//文字列を指定
$date = "2022年04月15日";
//フォーマットを指定
$format = "%d年%d月%d日";

//実行(第3引数は指定しない)
$result = sscanf($date, $format);

//結果表示
var_dump($result);
array(3) {
    [0]=>
    int(2022)
    [1]=>
    int(4)
    [2]=>
    int(15)
}

//第3引数以降を指定
$result = sscanf($date, $format, $y, $m, $d);

//結果
echo $result;   //3
echo $y;        //2022
echo $m;        //4
echo $d;        //15

参考リンク

date ローカルの日付/時刻を書式化する
fscanf フォーマットに基づきファイルからの入力を処理する
fprintf 指定されたフォーマットの文字列をファイルに書き込む
number_format 数字を千区切り・小数点の桁などでフォーマットする
printf 文字列を指定のフォーマットにしたがって出力する
sprintf 文字列を指定されたフォーマットで整形して返却
vfprintf フォーマットされた文字列をストリームに書き込む
vprintf フォーマットされた文字列を出力する
vsprintf フォーマットされた文字列を返す

タグ

sprintf フォーマット String 文字列


公式リファレンス

書式

sscanf ( string $str , string $format , mixed &...$vars ) : mixed

説明

関数 sscanf() は、printf() の入力版です。sscanf() は、文字列 str を読み込み、これを指定したフォーマット format に基づき解釈します。 このフォーマットは、sprintf()のマニュアルに記述されています。

フォーマット文字列の中のあらゆる空白文字は、入力文字列の中の 空白文字列にマッチします。つまり、フォーマット文字列の中にタブ文字 \t が含まれていても、それは入力中の半角スペースにマッチしてしまうということです。

パラメータ

str
入力文字列。
format
str を解釈するフォーマット。 sprintf() のドキュメントにある説明と比べて、以下の違いがあります。
  • ロケールに対応していません。
  • F、g、G および b はサポートしていません。
  • D は十進数値を表します。
  • i は基数検出つきの整数値を表します。
  • n は処理する文字数を表します。
  • s は、空白文字を読み取ると停止することを示します。
vars
オプションで指定する参照渡しの変数に、 パースされた値が格納されます。

返値

この関数のパラメータが二つだけの場合、処理された値は配列として返されます。 それ以外の場合は、もしオプションのパラメータが渡されればこの関数は 割り当てられた値の数を返します。オプションのパラメータは 参照渡しにする必要があります。 format で期待する部分文字列のほうが 実際に str に存在するものより多い場合は -1 を返します。

サンプル

例1 sscanf() の例

// シリアル番号を得る list($serial) = sscanf("SN/2350001", "SN/%d"); // 続いて製造日を得る $mandate = "January 01 2000"; list($month, $day, $year) = sscanf($mandate, "%s %d %d"); echo "Item $serial was manufactured on: $year-" . substr($month, 0, 3) . "-$day\n";

オプションのパラメータが指定された場合、この関数は、代入された値の数を返します。

例2 sscanf() - オプションパラメータの使用法

// author 情報を取得し、DocBook エントリを生成 $auth = "24\tLewis Carroll"; $n = sscanf($auth, "%d\t%s %s", $id, $first, $last); echo "     $first     $last \n";

参考

  • printf() - フォーマット済みの文字列を出力する
  • sprintf() - フォーマットされた文字列を返す
  • fprintf() - フォーマットされた文字列をストリームに書き込む
  • vprintf() - フォーマットされた文字列を出力する
  • vsprintf() - フォーマットされた文字列を返す
  • vfprintf() - フォーマットされた文字列をストリームに書き込む
  • fscanf() - フォーマットに基づきファイルからの入力を処理する
  • number_format() - 数字を千位毎にグループ化してフォーマットする
  • date() - ローカルの日付/時刻を書式化する
  • ワード検索


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

    関数名アルファベット別

    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用の拡張モジュール