関数・クラス解説
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";
参考
ワード検索
※入力キーワードが、関数名・説明文・タグに含まれるものを検索関数名アルファベット別
最終更新一覧
●stristr
大文字小文字を区別せず文字列を検索し、ヒット箇所以降(あるいは以前)の文字列を返却
●stripslashes
バックスラッシュでエスケープされた文字列から、バックスラッシュを取り除く
●stripos
大文字小文字を区別せずに文字列が最初に現れる位置を取得する
●stripcslashes
addcslashes() でクォートされた文字列をアンクォートする
●strip_tags
文字列から HTML と PHP のタグを除去して返却
●strcspn
指定した文字が最初に現れる位置を調べる
●strcoll
ロケールに基づいて2つの文字列を比較し同じか(あるいは大小)を判定する
●strcmp
2つの文字列を比較し同じか(あるいは大小)を判定する
●strchr
strstr() のエイリアス
●strcasecmp
2つの文字列を比較(大文字小文字を区別せず同じとみなす)
カテゴリー一覧
PHP の振る舞いの変更
音声フォーマットの操作
認証サービス
コマンドライン関連
圧縮およびアーカイブ
暗号
データベース関連
日付および時刻関連
ファイルシステム
自然言語および文字エンコーディング
画像処理および作成
メール関連
数学
テキスト以外の MIME 型
プロセス制御
その他の基本モジュール
その他のサービス
検索エンジン用の拡張モジュール
サーバー固有のモジュール
セッション関連
テキスト処理
変数・データ型関連
ウェブサービス
Windows 用のモジュール
XML 操作
GUI用の拡張モジュール