前ゼロを付与または削除
PHP文字列の前ゼロを付与もしくは削除する方法を解説します。数字や日付の文字列で使われることもあるので覚えておくと役に立ちます。
前ゼロ付与
PHPで前ゼロを付与するには、str_pad関数またはsprintf関数を利用します。
str_pad関数
str_pad( 対象文字列, 埋める桁数, [埋める文字], [オプション]);
オプション
- STR_PAD_RIGHT
(初期値) - 文字列の右側を埋める
- STR_PAD_LEFT
- 文字列の左側を埋める
- STR_PAD_BOTH
- 文字列の両側を埋める
- PHP
- COPY
echo str_pad(1, 3, 0, STR_PAD_LEFT); //001
str_pad関数は、対象の文字列を指定した文字で埋めて固定長にする関数です。この関数を使って、埋める文字を0・オプションで左側と指定すれば前ゼロをおこなうことができます。また、埋める文字やオプションを工夫すれば前ゼロ以外にも応用できる関数なので覚えておくと便利です。
sprintf関数
sprintf( フォーマット, [フォーマットする文字列]);
前ゼロ付与する場合のフォーマット
% + (埋める文字) + (埋める桁数) + d
- PHP
- COPY
echo sprintf('%03d', 1); //001
sprintf関数は、対象の文字列を指定したフォーマットに変える関数です。str_pad関数よりもさっぱりとして記述でコードを書けます。ここでは前ゼロ付与のフォーマットしか紹介していませんが、フォーマットの指定次第でいろいろな使い方ができる関数です。
前ゼロ削除
PHPで前ゼロを削除するには、数値の型に変換するかltrim関数を利用します。
数値の型に変換
- PHP
- COPY
echo (int)"001"; //1
文字列を数値の型に変換することで前ゼロを削除できます。この方法は他の関数を使うよりも高速に処理できますが、文字列によっては注意が必要です。例えば、"001.11"のような少数が含まれるような場合、int型に変換すると整数型なので"1"になってしまいます。このような場合は、float型に変換する必要があります。変換する型には注意しましょう。
ltrim関数
ltrim( 対象の文字列, [削除する文字]);
- PHP
- COPY
echo ltrim( "001", "0"); //1
ltrim関数は、対象の文字列の先頭から空白(もしくは指定した文字)を取り除く関数です。前ゼロを削除したい場合は2番目の引数に"0"を指定します。少数などの文字列にも対応できます。