PHP で先行ゼロ付きの数値を適切にフォーマットする方法
Ralfh Bryan Perez
2023年1月30日
- 文字列を使用して数を置き換える
-
PHP に先行ゼロを追加する
substr()
-
PHP で先行ゼロを追加するための
printf()
/sprintf()
-
PHP で先行ゼロを追加するための
str_pad()
PHP では、先行ゼロ付きの数値または整数は異なる値になり、予期しない結果になることがあります。
例:
$number = 0987654321; //this is an octal number
$number = 0x987654321 // this is a hexadecimal number
$number = 0b0987654321 // this is a binary number
数値がその自然な
意味を失わないようにするために、数値の代わりに文字列を使用したり、substr
、printf()
/sprintf()
、str_pad
などの異なる関数を使用したりする方法がいくつかあります。
文字列を使用して数を置き換える
最も簡単な方法。単に数値の代わりに文字列を使用するだけです。
$number = "0987654321";
使用の場合:
- 出力に必要な長さはありません。
- 常に先行ゼロが必要であるという数に例外はありません。
PHP に先行ゼロを追加する substr()
このメソッドは、文字列の長さを超えたときに、数値を左からクリッピングします。
start
が負の場合、返される文字列は string
の末尾から start
番目の文字で始まります。
例:
$number = 98765;
$length = 10;
$string = substr(str_repeat(0, $length).$number, - $length);
//output: 0000098765
使用の場合:
- 出力文字列に固定長がある場合。
- 文字列が長さより短い場合、ゼロを追加します。
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 -文字列の右側に埋め込む |