PHP sscanf() 関数

解析する文字列:

<?php
$str = "age:30 weight:60kg";
sscanf($str,"age:%d weight:%dkg",$age,$weight);
// 型と値を表示
var_dump($age,$weight);
?>

実行例

定義と用法

sscanf() 関数は指定されたフォーマットに基づいて文字列からの入力を解析します。sscanf() 関数はフォーマット文字列に基づいて変数に文字列を解析します。

この関数に2つのパラメータのみを渡すと、データは配列の形式で返されます。もしくは、追加のパラメータを渡すと、解析されたデータはこれらのパラメータに格納されます。区切り文字の数が変数の数よりも多い場合、エラーが発生します。ただし、区切り文字の数が変数の数よりも少ない場合、追加の変数には NULL が含まれます。

関連関数:

  • printf() - フォーマット化された文字列を出力します
  • sprintf() - フォーマット化された文字列を変数に書き込みます

文法

sscanf(string,format,arg1,arg2,arg++)
パラメータ 説明
string 必須。読み込む文字列を指定します。
format

必須。使用するフォーマットを指定します。

可能なフォーマット値:

  • %% - 百分号 % を返します
  • %c - ASCII値に対応する文字
  • %d - 符号を含む10進数(負数、0、正数)
  • %e - 小文字の科学記数法を使用(例:1.2e+2)
  • ソ号を含まない10進数(0以上)
  • %f - 浮動小数点数
  • %o - 8進数
  • %s - 文字列
  • %x - 16進数(小文字)
  • %X - 十六進数(大文字)

追加のフォーマット値。% とアルファベットの間に配置する必要があります(例:%.2f):

  • + (数字の前に + または - を付けて数字の正負を指定、デフォルトでは負数のみがマークされます。)
  • ' (埋め文字を指定、デフォルトはスペースです。幅指定子と一緒に使用する必要があります。)
  • - (変数値を左詰めにする)
  • .[0-9] (変数値の最小幅を指定)
  • .[0-9] (小数の桁数または最大文字列長を指定)

注釈:上記のフォーマット値を使用する場合、その順序で使用する必要があります。

arg1 オプション。データを格納する第1の変数。
arg2 オプション。データを格納する第2の変数。
arg++ オプション。データを格納する第3、第4の変数など、その後続きます。

技術的詳細

返り値: この関数に2つのパラメータのみを渡した場合、データは配列の形式で返されます。また、追加のパラメータを渡した場合、解析されたデータはこれらのパラメータに格納されます。区切り文字の数が変数の数を超えた場合にエラーが発生します。ただし、区切り文字の数が変数の数を下回った場合、追加の変数には NULL が含まれます。
PHP バージョン: 4.0.1+

さらに多くの例

例 1

フォーマット値 %s、%d、および %c を使用して:

<?php
$str = "If you divide 4 by 2 you'll get 2";
$format = sscanf($str,"%s %s %s %d %s %d %s %s %c");
print_r($format);
?>

実行例