【PHP】strlen()で文字列の長さを取得する!
(*このページは2021年5月5日に更新されました。)
PHPのstrlen()関数を使用することで指定した文字列の長さを取得することができます。
strlen()は文字列の長さを返す関数であり、指定したパラメータの文字列の長さを返します。
また、空の文字列に対して使用すると0が返されるようになりますが、全角文字は1文字につき3カウントするようになります。
strlen()は格納した変数の文字数を調べることができますので、IDやパスワードなどの何かしらの文字列を設定する場合に文字数チェックとして使用すると便利です。
今回はPHPのstrlen()関数で文字列の長さを取得する方法について以下の内容を解説していきます。
⚫︎ 文字だけの文字列の長さを取得する場合
⚫︎ 空白も含めた文字列の長さを取得する場合
⚫︎ 空の文字列の長さを取得する場合
⚫︎ strlen()を実際に使用したサンプルコード
⚫︎ 全角と半角の長さを正確に取得したい場合
目次
strlen()関数とは
strlen()関数とはパラメータで与えられた文字列の長さを返す関数となります。
strlen()の書き方
strlen()の書き方は下記となります。
1 |
strlen(対象の文字列) |
strlen()のパラメータ
⚫︎ 対象の文字列:
長さを取得したい対象の文字列を指定する
strlen()に対象の文字列を指定することで、対象の文字列の長さを返すようになります。
文字列の長さを取得するサンプルコード
文字列の長さを取得するサンプルコードをご紹介します。
文字だけの文字列の長さを取得した場合
trim()で文字だけの文字列の長さを取得した場合は文字数を返します。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?php echo "・この文字列の長さを調べる"; $text1 = "ABCDEFGHIJKLMN"; echo '対象の文字列: '.$text1; $text1_length = strlen($text1); echo '文字列の長さ: '.$text1_length; $text2 = "東京メトロ国会議事堂"; echo '対象の文字列: '.$text2; $text2_length = strlen($text2); echo '文字列の長さ: '.$text2_length; $text3 = "1234567"; echo '対象の文字列: '.$text3; $text3_length = strlen($text3); echo '文字列の長さ: '.$text3_length; ?> |
出力結果
・この文字列の長さを調べる
対象の文字列: ABCDEFGHIJKLMN
文字列の長さ: 14
対象の文字列: 東京メトロ国会議事堂
文字列の長さ: 30
対象の文字列: 1234567
文字列の長さ: 7
strlen()によって文字列の長さが表示されています。
また、ひらがなやカタカナ漢字の場合は1文字につき、3カウントされます。
空白も含めた文字列の長さを取得した場合
strlen()で空白も含めた文字列の長さを取得した場合は、空白も含めた文字数を返します。
例
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php echo "・この文字列の長さを調べる(空白込み)"; $text1 = "ABCDEFGHIJKLMN P"; echo '対象の文字列: '.$text1; $text1_length = strlen($text1); echo '文字列の長さ: '.$text1_length; $text2 = "東京メトロ 国会議事堂"; echo '対象の文字列: '.$text2; $text2_length = strlen($text2); echo '文字列の長さ: '.$text2_length; ?> |
出力結果
・この文字列の長さを調べる(空白込み)
対象の文字列: ABCDEFGHIJKLMN P
文字列の長さ: 16
対象の文字列: 東京メトロ 国会議事堂
文字列の長さ: 33
strlen()によって空白込みの文字数が返されています。
半角空白の場合は1カウント、全角空白の場合は3カウントとなります。
空の文字列の長さを取得する場合
strlen()で空の文字列の長さを取得する場合は、0を返します。
例
1 2 3 4 5 6 7 |
<?php echo "・空の文字列の長さを調べる"; $text1 = ""; echo '対象の文字列: '.$text1; $text1_length = strlen($text1); echo '文字列の長さ: '.$text1_length; ?> |
出力結果
・空の文字列の長さを調べる
対象の文字列:
文字列の長さ: 0
数える文字が見当たらないため、0が返されています。
strlen()を実際に使用したサンプルコード
strlen()の使い方は分かったもののどのような時に使用することができるのでしょうか?
続いては、strlen()を実際に使用したサンプルコードをご紹介します。
パスワードの文字制限
パスワードの文字制限としてstrlen()を使用することができます。
「6文字以上12文字以下で設定しないとパスワードを登録できません。」というようなイメージです。
例
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 function check($psw) { $psw_length = strlen($psw); if($psw_length >= 6 && $psw_length <=12) { echo '登録完了'; } else { echo '文字数が少ないかオーバーしています。'; } } echo "・パスワードを設定する"; $text1 = "abcd1234"; echo '設定したパスワード1: '.$text1; check($text1); $text2 = "ab12"; echo '設定したパスワード2: '.$text2; check($text2); $text3 = "abcdefgh12345678"; echo '設定したパスワード3: '.$text3; echo "\n"; check($text3); ?> |
出力結果
・パスワードを設定する
設定したパスワード1: abcd1234
登録完了しました。
設定したパスワード2: ab12
文字数が少ないかオーバーしています。
設定したパスワード3: abcdefgh12345678
文字数が少ないかオーバーしています。
6文字以上12文字以下であるならば登録が完了し、その条件を満たしていない文字列でしたら登録が完了できないようになっています。
全角と半角の長さを正確に取得したい場合
strlen()関数は半角文字の場合は、1文字に対して「1」とカウントしますが、全角文字の場合は、1文字に対して「3」とカウントします。
そのため、半角文字の長さしか正確に取得することがでず、全角と半角が混合した文字列には不向きです。
しかし、全角と半角の長さを正確に取得できる関数が存在します。
それは、mb_strlen()関数です。
mb_strlen()関数とはマルチバイト文字列の長さを返す関数となります。
つまり、全角や半角のみの文字列や全角と半角が混ざった文字列でも正確に文字数を取得することができます。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php echo "・この文字列の長さを調べる-1"; $text1 = "おはようはGood morning."; echo '対象の文字列: '.$text1; $text1_length = strlen($text1); echo '文字列の長さ: '.$text1_length; echo "・この文字列の長さを調べる-2"; $text2 = "おはようはGood morning."; echo '対象の文字列: '.$text2; $text2_length = mb_strlen($text2); echo '文字列の長さ: '.$text2_length; ?> |
出力結果
・この文字列の長さを調べる-1
対象の文字列: おはようはGood morning.
文字列の長さ: 28
・この文字列の長さを調べる-2
対象の文字列: おはようはGood morning.
文字列の長さ: 18
や全角と半角が混ざった文字列でもmb_strlen()で正確に文字数を取得することができます。
*こちらはSossyの助太刀ブログさんの「【PHP】文字列の長さを取得(カウント)するにはstrlen()!」の記事を参考にさせていただきました。
今回のポイント
strlen()で指定した文字列の長さを取得する
PHPで指定した文字の長さを取得するにはstrlen()を使用する。
⚫︎ strlen()のパラメータには対象の文字列を指定する
(対象の文字列は必須パラメータ)
⚫︎ strlen()で文字だけの文字列の長さを取得する場合、文字列の長さを返す
(半角文字は1文字につき1カウントであるが、全角文字は1文字につき3カウントとなる)
⚫︎ strlen()で空白も含めた文字列の長さを取得する場合、空白文字も含めた文字列の長さを返す
(半角空白は1文字につき1カウントで、全角空白は1文字につき3カウント)
⚫︎ strlen()で空の文字列の長さを取得する場合、0を返す
ST
株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。