・IT/Web系エンジニアの経験者の方
・どこの転職エージェントを利用しようか迷っている方
それなら、キッカケエージェントにご相談!
キッカケエージェントでは、少数精鋭のエージェントが、エンジニアの経験やスキル、志向性などをカウンセリングし、的確なアドバイスを提供します!
また、徹底した企業へのヒアリングにより、最適なマッチングを実現し、今では内定率が一般的なエージェントの2倍以上となっています!
転職エージェントに迷っている方、まずは無料でキャリア相談から!
(この記事は2022年7月06日に投稿されました。)
PHPで文字列の長さを取得するには、strlen()を使用します。
strlen()とは文字列の長さをバイト数で取得する関数となります。
そのため、1文字1カウントとして計測し、合計のカウント数を返り値として返すようになります。
しかし、全角文字は1文字につき3カウントとして計測されますので注意してください。
そのため、半角と全角の文字列の長さを取得したい場合はmb_strlen()を使用しましょう。
今回はPHPのstrlen()で文字列の長さを取得(カウント)する方法について紹介していきます。
strlen()とは
strlen()とは、文字列の長さをバイト数で取得する関数となります。
例えば、「abcdef」という文字列に対してstrlen()を使用すると「6」が返されるようになります。
strlen()の書き方
strlen()は下記のように記述します。
1 | <?php strlen('文字列'); ?> |
strlen()は1つのパラメータを指定することで、使用することができます。
strlen()のパラメータ
strlen()のパラメータは下記のようになります。
- 文字列(必須):
長さを測りたい文字列を指定する
strlen()は必須なパラメータとして、「文字列」を指定します。
strlen()で文字列の長さを取得するサンプルコード
strlen()で文字列の長さを取得するサンプルコードについてご紹介します。
ここでは、下記の2つの場合でstrlen()を使用してみます。
- 半角文字列の長さを取得する場合
- 全角文字列の長さを取得する場合
半角文字列の長さを取得する場合
半角の文字列の長さを取得する場合に、strlen()を使用してみます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?php $text1_1 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; echo '・対象の文字列1'; echo $text1_1; $text1_1_sl = strlen($text1_1); echo '・strlen()使用後1'; echo $text1_1_sl; $text1_2 = 123456789; echo '・対象の文字列2'; echo $text1_2; $text1_2_sl = strlen($text1_2); echo '・strlen()使用後2'; echo $text1_2_sl; ?> |
実行結果
半角文字に対して、strlen()を使用すると1文字1カウントとして計測されるようになります。
また、int型の文字列でも長さを取得することができます。
全角文字列の長さを取得する場合
全角の文字列の長さを取得する場合に、strlen()を使用してみます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?php $text2_1 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; echo '・対象の文字列1'; echo $text2_1; $text2_1_sl = strlen($text2_1); echo '・strlen()使用後1'; echo $text2_1_sl; $text2_2 = "あいうえおかきくけこさしすせそ"; echo '・対象の文字列2'; echo $text2_2; $text2_2_sl = strlen($text2_2); echo '・strlen()使用後2'; echo $text2_2_sl; ?> |
実行結果
全角文字に対して、strlen()を使用すると1文字3カウントとして計測されるようになります。
そのため、それぞれ「文字数 × 3」の長さが表示されています。
strlen()で配列の値の長さを取得するサンプルコード
strlen()で配列の値の長さを取得するサンプルコードについてご紹介します。
ここでは、下記の2つの場合でstrlen()を使用してみます。
- 配列の指定した値の長さを取得する場合
- 連想配列の指定したキーや値の長さを取得する場合
配列の指定した値の長さを取得する場合
配列の指定した値の長さを取得する場合に、strlen()を使用してみます。
⚫︎ 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 29 30 31 32 33 34 35 36 37 38 39 40 41 | <?php // 1次元配列 $array1 = ['Tokyo', 'Nagoya', 'Osaka']; echo '・対象の文字列1'; var_dump($array1); // 1次元配列のある要素に使用した場合 $array1_sl1 = strlen($array1[1]); echo '・strlen()使用後1-1'; echo $array1[1].'の長さ: '.$array1_sl1; // 1次元配列の全ての要素に使用した場合 echo '・strlen()使用後1-2'; foreach ($array1 as $val) { $array1_sl2 = strlen($val); echo $val.'の長さ: '.$text1_sl2; } // 2次元配列 $array2 = [ ['Tokyo', 'Nagoya', 'Osaka'], ['Hakata', 'Yokohama', 'Kobe'] ]; echo '・対象の文字列2'; var_dump($array2); // 2次元配列のある要素に使用した場合 $array2_sl1 = strlen($array2[0][2]); echo '・strlen()使用後2-1'; echo $array2[0][2].'の長さ: '.$array2_sl1; // 2次元配列の全ての要素に使用した場合 echo '・strlen()使用後2-2'; foreach ($array2 as $array) { foreach ($array as $val) { $array2_sl2 = strlen($val); echo $val.'の長さ: '.$array2_sl2; } echo "\n"; } ?> |
実行結果
指定した配列の値の長さを取得することができます。
またforeach文を使用することで、全ての配列の値の長さを取得することができます。
もし、foreach文について詳しく知りたい場合は下記の記事をご参考ください。
連想配列の指定したキーや値の長さを取得する場合
連想配列の指定したキーや値の長さを取得する場合に、strlen()を使用してみます。
⚫︎ 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 29 30 31 | <?php // 連想配列 $array3 = [ '東京' => 'Tokyo', '愛知' => 'Nagoya', '大阪' => 'Osaka', '福岡' => 'Hakata' ]; echo '・対象の文字列1'; var_dump($array3); // 連想配列のある要素に使用した場合 $array3_sl1 = strlen($array3['愛知']); echo '・strlen()使用後1-1'; echo $array3['愛知'].'の長さ: '.$array3_sl1; // 連想配列の全ての要素に使用した場合 echo '・strlen()使用後1-2'; foreach ($array3 as $val) { $array3_sl2 = strlen($val); echo $val.'の長さ: '.$array3_sl2; } // 連想配列の全てのキーに使用した場合 echo '・strlen()使用後1-3'; $array3_keys = array_keys($array3); foreach ($array3_keys as $key) { $array3_sl3 = strlen($key); echo $key.'の長さ: '.$array3_sl3; } ?> |
実行結果
strlen()によって、指定した連想配列のキーや値の長さを取得することができます。
また、こちらもforeach文を使用することで、全ての連想配列のキーや値の長さを取得することができます。
strlen()を実際に使用するケース
strlen()を実際に使用するケースについてご紹介します。
ここでは、下記の2つのケースについてご紹介します。
- 入力する文字列を制限する場合
- 文字列に対して繰り返し処理を行う場合
入力する文字列を制限する場合
まず、1つ目は入力する文字列を制限する場合です。
例えば、下記のコードのように、入力した文字列に対してstrlen()を使用してみます。
⚫︎ 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 | <?php echo '・入力する文字列'; $text3_1 = 'example12'; echo $text3_1; echo '・入力した結果'; $text3_2 = textCheck($text3_1); echo $text3_2; echo '・入力する文字列'; $text4_1 = 'example123456'; echo $text4_1; echo '・入力した結果'; $text4_2 = textCheck($text4_1); echo $text4_2; function textCheck($text) { $text_length = strlen($text); if($text_length >= 6 && $text_length <=10) { return '入力が完了しました。'; } else { return '文字数は6文字以上10字以内で入力してください。'; } } ?> |
実行結果
入力した文字に対して、strlen()を使用することで文字列の長さを測り、制限をかけることができます。
そのため、6文字以上10字以内なら、入力成功のメッセージが表示され、それ以外だとエラーのメッセージが表示されます。
文字列に対して繰り返し処理を行う場合
そして、2つ目は文字列に対して繰り返し処理を行う場合です。
例えば、下記のコードのように、繰り返し処理を行う文字列に対してstrlen()を使用してみます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?php echo '・入力する文字列'; $text5_1 = 'example123456'; echo $text5_1; $text5_2 = textEach($text5_1); function textEach($text) { $text_length = strlen($text); echo '・入力した結果'; for ($i = 0; $i < $text_length; ++$i) { $text_string = substr($text,$i,1); echo '処理'.$i. ': '; echo $text_string; echo "\n"; } } ?> |
実行結果
文字列に対してstrlen()で長さを取得し、for文などの条件式に指定することで、全ての文字に対して処理を行うことができます。
そのため、1文字1文字に「処理 + No」が表示されています。
全角半角が混合した文字列の長さを正確に取得する場合
全角半角が混合した文字列の長さを正確に取得する場合は、mb_strlen()を使用します。
mb_strlen()とは、マルチバイト文字列の長さをバイト数で取得する関数であり、全角や半角関係なく1文字1バイトとして計測されるようになります。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?php $text6 = 'あいうえおABCDE'; echo '・対象の文字列1'; echo $text6; $text6_sl = mb_strlen($text6); echo '・mb_strlen()使用後1'; echo $text6.'の長さ: '.$text6_sl; $text7 = 12345678; echo '・対象の文字列2'; echo $text7; $text7_sl = mb_strlen($text7); echo '・mb_strlen()使用後2'; echo $text7.'の長さ: '.$text7_sl; ?> |
実行結果
mb_strlen()によって全角半角が混合した文字列の長さを正確に取得することができます。
まとめ
⚫︎ strlen()とは、文字列の長さをバイト数で取得する関数である
⚫︎ strlen()を使用するには1つのパラメータを指定する
・ 文字列(必須)
⚫︎ 半角の文字列を指定した場合にstrlen()を使用すると、1文字を1カウントとして計測される
⚫︎ 全角の文字列を指定した場合にstrlen()を使用すると、1文字を3カウントとして計測される
⚫︎ strlen()は、文字列だけでなく指定した配列の値の長さを取得することができる
(連想配列のキーや値でも可能)
⚫︎ strlen()は下記のように使用することができる
・ 入力する文字列を制限する場合
・ 文字列に対して繰り返し処理を行う場合
⚫︎ 全角半角が混合した文字列の長さを正確に取得する場合はmb_strlen()を使用する