PHP sscanf()

王林
リリース: 2024-08-29 12:55:39
オリジナル
1216 人が閲覧しました

sscanf() は、必要な形式に従って解析された入力文字列を返す、PHP の事前定義関数です。 2 つのパラメーターの入力を受け取り、必要な配列を提供します。また、オプションのパラメーターなどの他のパラメーターが渡される場合、解析されたデータはそれらのパラメーターに保存されます。これらを含める変数より多くの指定子がある場合はエラーがスローされ、変数よりも低い指定子が存在する場合、余分な変数は NULL になります。

無料ソフトウェア開発コースを始めましょう

Web 開発、プログラミング言語、ソフトウェア テスト、その他

PHP sscanf() の構文

以下は PHP sscanf() の構文です。

sscanf(input_string, format, arg1, arg2, arg3....)
ログイン後にコピー

入力パラメータ:

1. input_string: これは、読み取られる入力文字列です。

2. format: 必要に応じて、以下のリストに従って形式を指定できます:

  • %%: この形式はパーセント記号で表されます。
  • %c: この形式は、必要な ASCII 値に従って文字を返します。
  • %d: この形式は符号付き 10 進数値用です。 (ゼロ、負、または正を指定できます)
  • %e: この形式は科学表記法を小文字で返します。 (例: 1.2e+2)
  • %u: ゼロ以上の符号なし 10 進数を表すために使用されます。
  • %f: これは浮動小数点数を表すために使用されます。
  • %o: これは 8 進数を表すために使用されます。
  • %s: これは文字列形式を表します。
  • %x: これは、16 進数の小文字を表します。
  • %X: これは、16 進数の大文字を表します。

% 記号と指定する文字の間には、いくつかの追加の形式値もあります。 (例: %0.3f)

  • + (これにより、数値の先頭に + と - の両方の値が強制的に追加され、デフォルトでは負の値のみがマークされます)。
  • ‘ (これはパディングとして何を使用するかを説明しており、ここではスペースがデフォルト値です。これは幅指定子と一緒に使用する必要があります。例: パディングに x を使用する %x30s)。
  • – (左側にあるものは変数値を示します)。
  • [0-9] (これは、変数値によって保持される最小幅を与えます)。
  • 。 [0-9] (これは、10 進数の合計数または文字列の最大長を表します)。
注: 複数の形式が使用されている場合、従う順序は上記と同じでなければなりません。
  • arg1: これはオプションのパラメーターであり、データを保存する最初の変数でもあります。
  • arg2: これもオプションであり、データを保存する 2 番目の変数です。
  • arg++: これはオプションであり、データを引き続き保存する連続する変数を表します。

戻り値: ここでは 2 つのケースが発生する可能性があります:

  • この関数に入力パラメータとして指定された値が 2 つだけの場合、データは配列の形式で返されます。
  • 他のオプションのパラメータが渡された場合、解析されたデータはそれらのパラメータに保存されます。
  • 指定子を含めることができる変数を超える複数の指定子がある場合、エラーがスローされます。
  • 指定子の数が、指定子に含めることができる変数より少ない場合、それらの変数には NULL が割り当てられます。
  • 予期された形式よりも多くの指定子が存在する場合は、-1 が返されます。

PHP sscanf() の例

言及されている例を以下に示します:

例 #1

コード:

<?php
$text = "Random sentence goes here with numbers 5 and 8";
$f = sscanf($text,"%s %s %s %s %s %s %d %s %d");
print_r($f);
?>
ログイン後にコピー

出力:

PHP sscanf()

この例では、必要に応じてテキストを指定しています。次に、sscanf 関数を使用して、入力文字列を表す正しい形式を指定します。したがって、出力では正確な文字列が配列として表示されます。これは、形式がデータと一致する場合にのみ行われます。

例 #2

コード:

<?php
// fetching the unique ID of product
list($ID) = sscanf("SN/680001", "SN/%d");
// fetching date of manufacturing
$manf = "March 03 2001";
// fetching the date of expiry
$expiry = "March 03 2002";
// Parsing using sscanf function
list($mon, $day, $yr) = sscanf($manf, "%s %d %d");
list($mon, $day, $yr) = sscanf($expiry, "%s %d %d");
echo "Product $ID was manufactured on $manf and will expire on: $yr-" . substr($mon, 0, 3) . "-$day\n";
?>
ログイン後にコピー

出力:

PHP sscanf()

この例では、一意の製造 ID や有効期限などの製品情報を確認および表示する方法を示しています。したがって、最初のパラメータでは ID 情報を取得し、%d 形式で解析しています。次に、製品の製造日と使用期限を取得し、sscanf 関数を使用して必要な形式と同じように解析します。次に、解析されたすべての内容を 1 つの文で表示します。ここに複数のものを追加して、必要な情報を表示できます。

Example #3

Code:

<?php
// Fetching designer info and to generate DressInfo entry
$design = "13\tCoco Chanel";
$str = sscanf($design, "%d\t%s %s", $ID, $firstname, $lastname);
// Displaying all the above details after formatting
echo "<author id='$ID'>
<firstname>$firstname</firstname>
<surname>$lastname</surname>
</author>\n";
?>
ログイン後にコピー

Output:

PHP sscanf()

In this example we are using sscanf function to first parse the ID and name of the designer. Then displaying the same in HTML format by splitting the names into first name and last name.

Example #4

Code:

<?php
// We are initializing the string here
$arr = "Character PHP and number 7";
// Parsing the input string according to different format
$format = sscanf($arr,"%s %c%c%c %s %s  %d");
print_r($format);
?>
ログイン後にコピー

Output:

PHP sscanf()

In the above example we are first initializing the string as required and this time including a few character sets in combination with strings. The same we are parsing using the sscanf function.

Conclusion

As seen above in all the examples, sscanf function in PHP is basically used to parse any type of the input string as per the requirements. There are a few cases where this function shows inefficiency to parse the strings, where there may be incorrect output when we try to parse a tab delimited string also having normal spaces in between. It also does not give the expected output if in the code there is a file name with its extension where it finds difficult to separate the two in presence of a “.”.

以上がPHP sscanf()の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
php
ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート