・IT/Web系エンジニアの経験者の方
・どこの転職エージェントを利用しようか迷っている方
それなら、キッカケエージェントにご相談!
キッカケエージェントでは、少数精鋭のエージェントが、エンジニアの経験やスキル、志向性などをカウンセリングし、的確なアドバイスを提供します!
また、徹底した企業へのヒアリングにより、最適なマッチングを実現し、今では内定率が一般的なエージェントの2倍以上となっています!
転職エージェントに迷っている方、まずは無料でキャリア相談から!
(この記事は2022年8月28日に投稿されました。)
PHPで文字列を分割する方法として、chunk_split()があります。
chunk_split()とは指定した文字列を複数の文字列に分割する関数であり、分割した文字列たちを返り値として返します。
こちらの関数は基本的に2つのパラメータを使用しますが、最大で3つのパラメータを指定することが可能です。
そして、3つ目のパラメータを指定することで、どこで分割したのかがわかりやすくなったり、HTML要素を作成したりすることができます。
また、chunk_split()は半角文字列だけでなく、全角文字列を複数の文字列に分割することも可能です。
しかし、全角の文字列を分割する時は分割する長さによっては文字化けを起こしてしまうので注意してください。
今回はPHPのchunk_split()で指定した文字列を複数の文字列に分割する方法について紹介していきます。
・1つの文字列から複数の文字列を作成したい人
chunk_split()とは
chunk_split()とは、指定した文字列を複数の文字列に分割する関数となります。
1つの文字列を分割することから、分割された文字列たちが返り値として返されるようになります。
chunk_split()はbase64_encode()でエンコードされた文字列をRFC2045の出力に変換する際に使用されることがあります。
chunk_split()の書き方
chunk_split()の書き方は下記のようになります。
1 | <?php chunk_split('文字列', '分割する長さ' [, '区切り文字']); ?> |
chunk_split()のパラメータ
chunk_split()のパラメータは下記のようになります。
- 文字列(必須):
分割したい文字列指定する - 分割する長さ(必須):
各文字列の長さを指定する - 区切り文字(任意):
分割した文字列の行末に付ける文字を指定する
array_product()は必須なパラメータとして「文字列」と「分割する長さ」を指定します。
また、任意なパラメータとして「区切り文字」を指定します。
chunk_split()で文字列を複数の文字列に分割するサンプルコード
chunk_split()で文字列を複数の文字列に分割するサンプルコードをご紹介します。
ここでは、下記の3つの場合でchunk_split()を使用します。
- 分割する長さが文字列の長さよりも小さい場合
- 分割する長さが文字列の長さよりも大きい場合
- 分割する長さに負の整数を指定する場合
分割する長さが文字列の長さよりも小さい場合
分割する長さが文字列の長さよりも小さい場合にchunk_split()を使用してみます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 | <?php echo '⚫︎ 対象の文字列'; $text = 'A good beginning makes a good ending.'; echo $text; echo '⚫︎ chunk_split()使用後'; $text_cs = chunk_split($text, 4); echo $text_cs; ?> |
実行結果
chunk_split()によって文字列が複数の分割されて複数の文字列が作成されています。
そのため4文字ごとに分割され、複数の文字列となって表示されています。
分割する長さが文字列の長さよりも大きい場合
分割する長さが文字列の長さよりも大きい場合にchunk_split()を使用してみます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 | <?php echo '⚫︎ 対象の文字列'; $text = 'A good beginning makes a good ending.'; echo $text; echo '⚫︎ chunk_split()使用後'; $text_cs = chunk_split($text, 50); echo $text_cs; ?> |
実行結果
分割する長さが文字列の長さよりも大きいため、指定した文字列が分割されていません。
そのため、指定した文字列がそのまま表示されています。
分割する長さに負の整数を指定する場合
分割する長さに負の整数を指定する場合にchunk_split()を使用してみます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 | <?php echo '⚫︎ 対象の文字列'; $text = 'A good beginning makes a good ending.'; echo $text; echo '⚫︎ chunk_split()使用後'; $text_cs = chunk_split($text, -3); echo $text_cs; ?> |
実行結果
分割する長さに負の整数を指定すると、分割できないことからエラーとなります。
chunk_split()で行末の区切りを指定して複数の文字列に分割する場合
chunk_split()で行末の区切りを指定して複数の文字列に分割する場合は、3つ目のパラメータに「区切り文字」を指定します。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 | <?php echo '⚫︎ 対象の文字列'; $text = 'AppleAgentBeastBladeBraveCaste'; echo $text; echo '⚫︎ chunk_split()使用後'; $text_cs = chunk_split($text, 5, '・'); echo $text_cs; ?> |
実行結果
区切ったそれぞれの文字列の最後に「・」がついて文字列が分割されています。
また、区切り文字として、HTMLタグを指定すると文字列から要素を作成することができます。
⚫︎ 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 | <div> <?php echo '⚫︎ 対象の文字列'; echo "<br>"; $text = 'AppleAgentBeastBladeBraveCaste'; echo $text; echo "<br>"; echo "<br>"; echo '⚫︎ chunk_split()使用後'; echo "<br>"; ?> <ul> <li class= "list-item"> <?php $text_cs = chunk_split($text, 5, '</li><li class= "list-item">'); echo $text_cs; ?> </li> </ul> </div> <style> .list-item:nth-child(7) { display:none; } </style> |
実行結果
区切り文字として「</li><li>」を指定することで、文字列が、リスト要素になって画面に表示されています。
chunk_split()で全角文字列を複数の文字列に分割する場合
chunk_split()で全角文字列を複数の文字列に分割する場合は、分割する長さを「3の倍数」で指定します。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 | <?php echo '⚫︎ 対象の配列'; $text = '終わりよければ全てよし'; print_r($text); echo '⚫︎ chunk_split()使用後'; $text_cs = chunk_split($text, 2); print_r($text_cs); ?> |
実行結果
3の倍数を指定することで、全角文字列を複数の文字列に分割することができます。
そのため、1文字ずつ文字列が分割されています。
全角文字は1文字3バイトになるため、分割する長さを「文字数 × 3」で分割するようにしましょう。
分割する長さを3の倍数以外で指定すると、文字化けになってしまいますので注意してください。
配列を複数の配列に分割する場合
配列を複数の配列に分割する場合は、array_chunk()を使用します。
array_chunk()とは、指定した配列を複数の配列に分割する関数になります。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 | <?php echo '⚫︎ 対象の配列'; $array = ['りんご', 'ゴリラ', 'ラッパ', 'パンダ', 'ダーマ']; print_r($array); echo '⚫︎ array_chunk()使用後'; $array_ac = array_chunk($array, 2); print_r($array_ac); ?> |
実行結果
array_chunk()によって、指定した配列を複数の配列に分割されています。
そのため2つの要素ごとに分割され、複数の配列となって表示されています。
もし、array_chunk()について詳しく知りたい場合は下記の記事をご参考ください。
まとめ
⚫︎ chunk_split()とは、指定した文字列を複数の文字列に分割する関数である
⚫︎ chunk_split()を使用するには最大で3つのパラメータを指定できる
・ 文字列(必須)
・ 分割する長さ(必須)
・ 区切り文字(任意)
⚫︎ chunk_split()で分割する長さが文字列の長さよりも小さい場合は、文字列が複数の分割されて複数の文字列が返される
⚫︎ chunk_split()で分割する長さが文字列の長さよりも大きい場合は、文字列がそのまま返される
⚫︎ chunk_split()で分割する長さに負の整数を指定すると、エラーになる
⚫︎ chunk_split()の3つ目のパラメータを指定することで、行末の区切りを指定して複数の文字列に分割することができる
(HTMLタグを指定すると、要素を作成することができる)
⚫︎ chunk_split()で全角文字列を複数の文字列に分割する場合は、分割する長さを「3の倍数」で指定する
⚫︎ 配列を複数の配列に分割する場合は、array_chunk()を使用する