・IT/Web系エンジニアの経験者の方
・どこの転職エージェントを利用しようか迷っている方
それなら、キッカケエージェントにご相談!
キッカケエージェントでは、少数精鋭のエージェントが、エンジニアの経験やスキル、志向性などをカウンセリングし、的確なアドバイスを提供します!
また、徹底した企業へのヒアリングにより、最適なマッチングを実現し、今では内定率が一般的なエージェントの2倍以上となっています!
転職エージェントに迷っている方、まずは無料でキャリア相談から!
(この記事は2022年6月26日に投稿されました。)
PHPで文字列の前後を指定文字で埋める関数として、str_pad()があります。
str_pad()とは指定した文字列を指定した長さで埋める関数になります。
例えば、「abcde」という文字列に対してstr_pad()を使用すると、「abcde++++」のように自分で設定した長さで好きな文字を埋めて返すことができます。
しかし、半角と全角文字ではそれぞれバイト数が異なるため、長さには注意してください。
また、str_pad()は、「++abcde++」や「++++abcde」のように、左寄せや中央寄せで指定文字を埋めて表示することもできます。
今回はPHPのstr_pad()で文字列の前後を指定文字で埋める方法について紹介していきます。
str_pad()とは
冒頭でも言いましたが、str_pad()とは、指定した文字列を指定した長さで埋める関数となります。
例えば、「abcde」という文字列に「10」という長さを設定してstr_pad()を使用すると、「abcdeaaaaa」のように足りない文字数分を指定した文字で埋めて返すようになります。
そして、埋めるための文字や並べる場所は、自分で設定することが可能です。
str_pad()の書き方
str_pad()の書き方は下記のようになります。
1 | <?php str_pad('入力文字列', '桁数'[, '埋める文字列', '埋め方の形式']); ?> |
str_pad()のパラメータ
str_pad()のパラメータは下記のようになります。
- 入力文字列(必須):
入力する対象の文字列を指定する - 桁数(必須):
桁数をインデックスで指定する - 埋める文字列(任意):
埋めるための文字列を指定する - 埋め方の形式(任意):
埋め方の形式を定数で指定する
str_pad()は必須のパラメータとして「入力文字列」と「桁数」を指定します。
また、任意のパラメータとして、「埋める文字列」と「埋め方の形式」も指定することができます。
str_pad()で文字列の前後を指定文字で埋めるサンプルコード
str_pad()で文字列の前後を指定文字で埋めるサンプルコードをご紹介します。
ここでは下記の3つの場合でstr_pad()を使用してみます。
- 入力文字列の文字数よりも桁数の方が多い場合
- 入力文字列の文字数と桁数が同じである場合
- 入力文字列の文字数よりも桁数の方が少ない場合
入力文字列の文字数よりも桁数の方が多い場合
入力文字列の文字数よりも桁数の方が多い場合に、str_pad()を使用してみます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | <?php $text1_1_1 = 'Fill in the text!'; echo '・対象の文字列: '; echo $text1_1_1; $text1_1_2 = str_pad($text1_1_1, 20); echo '・str_pad()使用後の文字列: '; echo $text1_1_2; var_dump($text1_1_2); $text1_2_1 = '文字列を埋める'; echo '・対象の文字列: '; echo $text1_2_1; $text1_2_2 = str_pad($text1_2_1, 30); echo '・str_pad()使用後の文字列: '; echo $text1_2_2; var_dump($text1_2_2); $text1_3_1 = 123456789; echo '・対象の文字列: '; echo $text1_3_1; $text1_3_2 = str_pad($text1_3_1, 14); echo '・str_pad()使用後の文字列: '; echo $text1_3_2; var_dump($text1_3_2); ?> |
実行結果
入力文字列の文字数よりも桁数の方が多い場合は、「桁数-入力文字列」の文字数が「空白」で表示されるようになります。
また、空白は右寄せで表示されています。
全角文字は1文字3バイトになりますので、桁数の指定次第では文字化けが起こる場合があります。
入力文字列の文字数と桁数が同じである場合
入力文字列の文字数と桁数が同じである場合に、str_pad()を使用してみます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | <?php $text2_1_1 = 'Fill in the text!'; echo '・対象の文字列: '; echo $text2_1_1; $text2_1_2 = str_pad($text2_1_1, 17); echo '・str_pad()使用後の文字列: '; echo $text2_1_2; var_dump($text2_1_2); $text2_2_1 = '文字列を埋める'; echo '・対象の文字列: '; echo $text2_2_1; $text2_2_2 = str_pad($text2_2_1, 21); echo '・str_pad()使用後の文字列: '; echo $text2_2_2; var_dump($text2_2_2); $text2_3_1 = 123456789; echo '・対象の文字列: '; echo $text2_3_1; $text2_3_2 = str_pad($text2_3_2, 9); echo '・str_pad()使用後の文字列: '; echo $text2_3_2; var_dump($text2_3_2); ?> |
実行結果
入力文字列の文字数と桁数が同じである場合は、入力文字列が全て表示されるようになります。
全角文字は1文字3バイトになるので「7(文字) × 3(バイト)」で「21」を指定しています。
入力文字列の文字数よりも桁数の方が少ない場合
入力文字列の文字数よりも桁数の方が少ない場合に、str_pad()を使用してみます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | <?php $text3_1_1 = 'Fill in the text!'; echo '・対象の文字列: '; echo $text3_1_1; $text3_1_2 = str_pad($text3_1_1, 10); echo '・str_pad()使用後の文字列: '; echo $text3_1_2; var_dump($text3_1_2); $text3_2_1 = '文字列を埋める'; echo '・対象の文字列: '; echo $text3_2_1; $text3_2_2 = str_pad($text3_2_1, 4); echo '・str_pad()使用後の文字列: '; echo $text3_2_2; var_dump($text3_2_2); $text3_3_1 = 123456789; echo '・対象の文字列: '; echo $text3_3_1; $text3_3_2 = str_pad($text3_3_1, 5); echo '・str_pad()使用後の文字列: '; echo $text3_3_2; var_dump($text3_3_2); ?> |
実行結果
入力文字列の文字数よりも桁数の方が少ない場合も、入力文字列が全て表示されるようになります。
埋める文字列を指定して文字列の前後を指定文字で埋めるサンプルコード
str_pad()に埋める文字列を指定して文字列の前後を指定文字で埋めるサンプルコードをご紹介します。
埋める文字列を指定するにはstr_pad()に第3パラメータである「埋める文字列」を指定します。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | <?php $text4_1_1 = 'Fill in the text!'; echo '・対象の文字列: '; echo $text4_1_1; $text4_1_2 = str_pad($text4_1_1, 24, '$'); echo '・str_pad()使用後の文字列: '; echo $text4_1_2; var_dump($text4_1_2); $text4_2_1 = '文字列を埋める'; echo '・対象の文字列: '; echo $text4_2_1; $text4_2_2 = str_pad($text4_2_1, 30, '*'); echo '・str_pad()使用後の文字列: '; echo $text4_2_2; var_dump($text4_2_2); $text4_3_1 = 123456789; echo '・対象の文字列: '; echo $text4_3_1; $text4_3_2 = str_pad($text4_3_1, 16, '#'); echo '・str_pad()使用後の文字列: '; echo $text4_3_2; var_dump($text4_3_2); ?> |
実行結果
str_pad()に「埋める文字列」を指定することで、埋める文字列を自分で決めて表示することができます。
そのため、パラメータに指定した「$」や「*」や「#」が足りない文字数を埋めて表示されています。
埋め方を指定して文字列の前後を指定文字で埋めるサンプルコード
str_pad()に埋め方を指定して文字列の前後を指定文字で埋めるサンプルコードについてご紹介します。
埋め方を指定するには、str_pad()に第4パラメータである「埋め方の形式」を指定します。
ここでは下記の3つの場合でstr_pad()を使用してみます。
- 右寄せにして文字列を指定文字で埋める場合
- 左寄せにして文字列を指定文字で埋める場合
- 中央寄せにして文字列を指定文字で埋める場合
右寄せにして文字列を指定文字で埋める場合
str_pad()で右寄せにして文字列を指定文字で埋める場合は、埋め方の形式に「STR_PAD_RIGHT」を指定します。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | <?php $text5_1_1 = 'Right justified'; echo '・対象の文字列: '; echo $text5_1_1; $text5_1_2 = str_pad($text5_1_1, 24, '$', STR_PAD_RIGHT); echo '・str_pad()使用後の文字列: '; echo $text5_1_2; var_dump($text5_1_2); $text5_2_1 = '右寄せで埋める'; echo '・対象の文字列: '; echo $text5_2_1; $text5_2_2 = str_pad($text5_2_1, 30, '*', STR_PAD_RIGHT); echo '・str_pad()使用後の文字列: '; echo $text5_2_2; var_dump($text5_2_2); $text5_3_1 = 123456789; echo '・対象の文字列: '; echo $text5_3_1; $text5_3_2 = str_pad($text5_3_1, 16, '#', STR_PAD_RIGHT); echo '・str_pad()使用後の文字列: '; echo $text5_3_2; var_dump($text5_3_2); ?> |
実行結果
埋め方の形式に「STR_PAD_RIGHT」を指定することで右寄せにして文字列を指定文字で埋めることができます。
そのため、「$」や「*」や「#」が右に埋められて表示されています。
今回は、「STR_PAD_RIGHT」を指定して右寄せにしていますが、指定しなくてもデフォルトで右寄せになります。
左寄せにしてして文字列を指定文字で埋める場合
str_pad()で左寄せにしてして文字列を指定文字で埋める場合は、埋め方の形式に「STR_PAD_LEFT」を指定します。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | <?php $text6_1_1 = 'Left justified'; echo '・対象の文字列: '; echo $text6_1_1; $text6_1_2 = str_pad($text6_1_1, 24, '$', STR_PAD_LEFT); echo '・str_pad()使用後の文字列: '; echo $text6_1_2; var_dump($text6_1_2); $text6_2_1 = '左寄せで埋める'; echo '・対象の文字列: '; echo $text6_2_1; $text6_2_2 = str_pad($text6_2_1, 30, '*', STR_PAD_LEFT); echo '・str_pad()使用後の文字列: '; echo $text6_2_2; var_dump($text6_2_2); $text6_3_1 = 123456789; echo '・対象の文字列: '; echo $text6_3_1; $text6_3_2 = str_pad($text6_3_1, 16, '#', STR_PAD_LEFT); echo '・str_pad()使用後の文字列: '; echo $text6_3_2; var_dump($text6_3_2); ?> |
実行結果
埋め方の形式に「STR_PAD_LEFT」を指定することで左寄せにして文字列を指定文字で埋めることができます。
そのため、「$」や「*」や「#」が左に埋められて表示されています。
中央寄せにして文字列を指定文字で埋める場合
str_pad()で中央寄せにして文字列を指定文字で埋める場合は、埋め方の形式に「STR_PAD_BOTH」を指定します。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | <?php $text7_1_1 = 'Center justified'; echo '・対象の文字列: '; echo $text7_1_1; $text7_1_2 = str_pad($text1_1, 25, '$', STR_PAD_BOTH); echo '・str_pad()使用後の文字列: '; echo $text7_1_2; var_dump($text1_2); $text7_2_1 = '中央寄せで埋める'; echo '・対象の文字列: '; echo $text7_2_1; $text7_2_2 = str_pad($text7_2_1, 36, '*', STR_PAD_BOTH); echo '・str_pad()使用後の文字列: '; echo $text17_2_2; var_dump($text7_2_2); $text7_3_1 = 123456789; echo '・対象の文字列: '; echo $text7_3_1; $text7_3_2 = str_pad($text7_3_1, 16, '#', STR_PAD_BOTH); echo '・str_pad()使用後の文字列: '; echo $text7_3_2; var_dump($text7_3_2); ?> |
実行結果
埋め方の形式に「STR_PAD_BOTH」を指定することで中央寄せにして文字列を指定文字で埋めることができます。
そのため、「$」や「*」や「#」が左右に埋められて表示されています。
また、指定文字数が奇数になる場合は、右側に多く文字が埋められるようになります。
まとめ
⚫︎ str_pad()とは、文字列の一部を切り出す関数である
⚫︎ str_pad()は最大で4つのパラメータを指定することができる
・ 入力文字列(必須)
・ 桁数(必須)
・ 埋める文字列(任意)
・ 埋め方の形式(任意)
⚫︎ 入力文字列の文字数よりも桁数の方が多い場合にstr_pad()を使用すると、桁数-入力文字列」の文字数が「空白」で表示される
⚫︎ 入力文字列の文字数と桁数が同じである場合にstr_pad()を使用すると、入力文字列が全て表示される
⚫︎ 入力文字列の文字数よりも桁数の方が少ない場合にstr_pad()を使用すると、入力文字列が全て表示される
⚫︎ str_pad()で埋める文字列を指定するには第3パラメータに「埋める文字列」を指定する
⚫︎ str_pad()で右寄せにして文字列を指定文字で埋める場合は、第4パラメータに「STR_PAD_RIGHT」を指定する
⚫︎ str_pad()で左寄せにして文字列を指定文字で埋める場合は、第4パラメータに「STR_PAD_LEFT」を指定する
⚫︎ str_pad()で中央寄せにして文字列を指定文字で埋める場合は、第4パラメータに「STR_PAD_BOTH」を指定する