PHP で先行ゼロ付きの数値を適切にフォーマットする方法

Ralfh Bryan Perez 2023年1月30日
  1. 文字列を使用して数を置き換える
  2. PHP に先行ゼロを追加する substr()
  3. PHP で先行ゼロを追加するための printf()/sprintf()
  4. PHP で先行ゼロを追加するための str_pad()
PHP で先行ゼロ付きの数値を適切にフォーマットする方法

PHP では、先行ゼロ付きの数値または整数は異なる値になり、予期しない結果になることがあります。

例:

$number = 0987654321; //this is an octal number
$number = 0x987654321 // this is a hexadecimal number
$number = 0b0987654321 // this is a binary number

数値がその自然な意味を失わないようにするために、数値の代わりに文字列を使用したり、substrprintf()/sprintf()str_pad などの異なる関数を使用したりする方法がいくつかあります。

文字列を使用して数を置き換える

最も簡単な方法。単に数値の代わりに文字列を使用するだけです。

$number = "0987654321";

使用の場合:

  1. 出力に必要な長さはありません。
  2. 常に先行ゼロが必要であるという数に例外はありません。

PHP に先行ゼロを追加する substr()

このメソッドは、文字列の長さを超えたときに、数値を左からクリッピングします。

start が負の場合、返される文字列は string の末尾から start 番目の文字で始まります。

例:

$number = 98765;
$length = 10;
$string = substr(str_repeat(0, $length).$number, - $length);

//output: 0000098765

使用の場合:

  1. 出力文字列に固定長がある場合。
  2. 文字列が長さより短い場合、ゼロを追加します。

PHP で先行ゼロを追加するための printf()/sprintf()

入力が長さより短い場合に、固定長で出力を埋め、入力が大きい場合に文字列を返します。

例:

$length = 10;
$char = 0;
$type = 'd';
$format = "%{$char}{$length}{$type}"; // or "$010d";

//print and echo
printf($format, 987654321);

//store to a variable
$newFormat = sprintf($format, 987654321);

// output: 0987654321

この例では、固定長は 10 に設定され、入力長は 9 であるため、printf() / sprintf を使用する場合、左側に 1つのゼロが追加されます。

sprintf() パラメータ値

パラメータ 説明文
format(必須) 文字列と変数のフォーマット方法。
可能なフォーマット値:
%%-パーセント記号
%b-バイナリ
%c-参照される文字 ASCII
%d-10 進数(負または正)
%e-小文字の科学表記
%E-大文字の科学表記
%u-符号なし 10 進数
%f-浮動小数点数(ローカル設定対応)
%F-浮動小数点数(ローカル設定非対応)
%g-短いバージョンの%e%f
%G-%E%F の短いバージョン
%o-8 進
%s-文字列
%x-16 進数(小文字)
%X-16 進数(大文字)
arg1(必須) 最初の%記号に挿入されます
arg2(オプション) 2 番目の%記号に挿入されます
argg++(オプション) 3 番目、4 番目などに挿入されます。%記号

注意:

  • 入力文字列の長さがパッド長以上の場合、文字列のみが返されます。文字は省略されません。
  • パディングは、入力の長さがパディングの長さより短い場合にのみ追加されます。

PHP で先行ゼロを追加するための str_pad()

このメソッドは、指定された文字の新しい長さに文字列を埋め込みます。

例:

$length = 7;
$string = "12345";
echo str_pad($string,$length,"0", STR_PAD_LEFT);
//output: 0012345

上記の例では、指定された文字列(指定された長さ(この場合は 7)に一致するまで、zero を追加します。

str_pad() パラメータリスト

パラメータ 説明文
string パディングする文字列
length 文字列の新しい長さを指定します。**注:**値が文字列の長さより短い場合、何も起こりません。
pad_string パディングに使用する文字列を指定します。デフォルト値は空白です。
pad_type 文字列を埋める場所を指定します。
受け入れられる値:
STR_PAD_BOTH-これは文字列の両側を埋めます。
STR_PAD_LEFT-文字列の左側を埋めます
STR_PAD_RIGHT-文字列の右側に埋め込む

関連記事 - PHP Function