・IT/Web系エンジニアの経験者の方
・どこの転職エージェントを利用しようか迷っている方
それなら、キッカケエージェントにご相談!
キッカケエージェントでは、少数精鋭のエージェントが、エンジニアの経験やスキル、志向性などをカウンセリングし、的確なアドバイスを提供します!
また、徹底した企業へのヒアリングにより、最適なマッチングを実現し、今では内定率が一般的なエージェントの2倍以上となっています!
転職エージェントに迷っている方、まずは無料でキャリア相談から!
(この記事は2022年7月10日に投稿されました。)
PHPで指定した文字列の出現回数を数える関数として、substr_count()があります。
substr_count()とは対象の文字列の中から、指定した文字列の出現回数を取得する関数となります。
そのため、調べる文字列が見つかった場合は「1以上の出現回数」を、調べる文字列が見つからなかった場合は「0」が返り値として返されるようになります。
しかし、文字列が重なった場合にsubstr_count()を使用すると、1つの文字列として出現回数がカウントされるようになりますので注意してください。
また、substr_count()は最大で4つのパラメータを指定することができ、対象の文字列の検索範囲を制限して文字列の出現回数を数えることができます。
今回はPHPのsubstr_count()で指定した文字列の出現回数を数える方法について紹介していきます。
substr_count()とは
冒頭でも言いましたが、substr_count()とは、対象の文字列から指定した文字列の出現回数を調べる関数となります。
出現回数を調べるため、substr_count()は出現回数を返り値として返すようになります。
また、同じ文字列でも大文字と小文字は区別されてカウントされます。
substr_count()の書き方
substr_count()は下記のように記述します。
1 | <?php substr_count('検索対象の文字列','出現回数を調べる文字列' [,'開始位置','検索文字列の長さ']); ?> |
substr_count()のパラメータ
substr_count()のパラメータは下記のようになります。
- 検索対象の文字列(必須):
検索対象の文字列を指定する - 出現回数を調べる文字列(必須):
検索対象の文字列から出現回数を調べたい文字列を指定する - 開始位置(任意):
検索対象の文字列の検索開始位置を数値で指定する
(0がスタート) - 文字列の長さ(任意):
検索対象の文字列の範囲を数値で指定する
substr_count()で文字列の出現回数を数えるサンプルコード
substr_count()で文字列の出現回数を数えるサンプルコードをご紹介します。
ここでは、下記の2つの場合でsubstr_count()を使用してみます。
- 出現回数を調べる文字列が見つかった場合
- 出現回数を調べる文字列が見つからなかった場合
- 出現回数を調べる文字列が重なった場合
出現回数を調べる文字列が見つかった場合
出現回数を調べる文字列が見つかった場合にsubstr_count()を使用してみます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php echo '⚫︎ 対象の文字列'; $text = 'A big black bug bit a big black bear.'; echo $text; echo '・ 出現回数を調べる文字列'; $text_cnt = 'big'; echo $search; echo '・ substr_count()使用後'; $text_cnt = substr_count($text, $search); echo $text_cnt; ?> |
実行結果
substr_count()によって、指定した出現回数が返されています。
「パジャマ」は3回出現しているので、「3」が表示されています。
出現回数を調べる文字列が見つからなかった場合
出現回数を調べる文字列が見つからなかった場合にsubstr_count()を使用してみます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php echo '⚫︎ 対象の文字列'; $text = 'A big black bug bit a big black bear.'; echo $text; echo '・ 出現回数を調べる文字列'; $search = 'ant'; echo $search; echo '・substr_count()使用後'; $text_cnt = substr_count($text,$search); echo $text_cnt; ?> |
実行結果
指定した出現回数の文字列が見つからなかったので、substr_count()によって「0」が返されています。
出現回数を調べる文字列が重なった場合
出現回数を調べる文字列が重なった場合に、substr_count()を使用してみます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php echo '⚫︎ 対象の文字列'; $text = 'peter piper picked peter piper picked peter piper picked'; echo $text; echo '・ 出現回数を調べる文字列'; $search = 'peter piper picked peter piper picked'; echo $search; echo '・ substr_count()使用後'; $text_cnt = substr_count($text,$search); echo $text_cnt; ?> |
実行結果
出現回数を調べる文字列は、始めのと終わりで2回対象となる文字列が発見されています。
しかし、真ん中の文字列が重なっているので、substr_count()によって「1」が返されています。
substr_count()の開始位置を指定して文字列の出現回数を数えるサンプルコード
substr_count()の開始位置を指定して、文字列の出現回数を数えるサンプルコードをご紹介します。
ここでは、下記の2つの場合でsubstr_count()を使用してみます。
- 開始位置に正の整数を指定した場合
- 開始位置に負の整数を指定した場合
開始位置に正の整数を指定した場合
開始位置に正の整数を指定した場合に、substr_count()を使用してみます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <?php echo '⚫︎ 対象の文字列'; $text = 'peter piper picked a peck of pickled peppers.'; echo $text; echo '・ 出現回数を調べる文字列1'; $search1 = 'pe'; echo $search1; echo '・ substr_count()使用後1'; $text_cnt1 = substr_count($text, $search1, 6); echo $text_cnt1; echo '・ 出現回数を調べる文字列2'; $search2 = 'peter'; echo $search2; echo '・ substr_count()使用後2'; $text_cnt2 = substr_count($text, $search2, 6); echo $text_cnt2; ?> |
実行結果
開始位置に正の整数を指定することで、先頭から検索対象の文字列の検索開始位置をずらして、文字列の出現回数を数えることができます。
そのため、「pe」の出現回数は「4」、「peter」の出現回数は「0」となります。
検索対象の文字列は「piper picked a peck of pickled peppers.」となります。
開始位置に負の整数を指定した場合
開始位置に負の整数を指定した場合に、substr_count()を使用してみます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <?php echo '⚫︎ 対象の文字列'; $text = 'peter piper picked a peck of pickled peppers.'; echo $text; echo '・ 出現回数を調べる文字列1'; $search1 = 'pe'; echo $seach1; echo '・ substr_count()使用後1'; $text_cnt1 = substr_count($text, $seach1, -8); echo $text_cnt1; echo '・ 出現回数を調べる文字列2'; $search2 = 'pi'; echo $search2; echo '・ substr_count()使用後2'; $text_cnt2 = substr_count($text, $search2, -8); echo $text_cnt2; ?> |
実行結果
開始位置に負の整数を指定することで、末尾から検索対象の文字列の検索開始位置をずらして、文字列の出現回数を数えることができます
そのため、「pe」の出現回数は「2」、「pi」の出現回数は「0」となります。
検索対象の文字列は「peppers.」となります。
substr_count()の文字列の長さを指定して文字列の出現回数を数えるサンプルード
substr_count()の文字列の長さを指定して、文字列の出現回数を数えるサンプルードをご紹介します。
ここでは、下記の2つの場合でsubstr_count()を使用してみます。
- 文字列の長さが検索対象の文字列より小さい場合
- 文字列の長さが検索対象の文字列より大きい場合
文字列の長さが検索対象の文字列より小さい場合
文字列の長さが検索対象の文字列より小さい場合にsubstr_count()を使用します。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php echo '⚫︎ 対象の文字列'; $text = 'peter piper picked a peck of pickled peppers.'; echo $text; echo '・ 出現回数を調べる文字列'; $search = 'pi'; echo $search; echo '・ substr_count()使用後'; $text_cnt = substr_count($text, $search, 6, 12); echo $text_cnt; ?> |
実行結果
検索対象の文字列の長さより小さい値を指定すると、検索対象の文字列の範囲を制限することができます。
そのため、「pi」の出現回数は「2」となります。
検索対象の文字列の範囲は「piper picked」となります。
文字列の長さが検索対象の文字列より大きい場合
文字列の長さが検索対象の文字列より大きい場合にsubstr_count()を使用します。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php echo '⚫︎ 対象の文字列'; $text = 'peter piper picked a peck of pickled peppers.'; echo $text; echo '・ 出現回数を調べる文字列'; $search = 'pe'; echo $search; echo '・ substr_count()使用後'; $text_cnt = substr_count($text, $search, -8, 10); echo $text_cnt; ?> |
実行結果
検索対象の文字列の長さよりも大きい数値を指定したため、エラーが発生しています。
検索対象の文字列の長さである「8(peppers.)」に対して、「10」を指定しているため、オーバーしています。
半角全角文字列の出現回数を正確に数える場合
半角全角文字列の出現回数を正確に数える場合は、mb_substr_count()を使用します。
mb_substr_count()とは、substr_count()と同じで文字列の出現回数を数える関数となります。
しかし、マルチバイト文字列を考慮して出現回数を数えることから全角文字列もちろん、全角と半角が混合した文字列でも正確に数えることができます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php echo '⚫︎ 対象の文字列'; $text = 'peter piper picked a peck of pickled peppers.'; echo $text; echo '・ 出現回数を調べる文字列'; $search = 'pe'; echo $search; echo '・ substr_count()使用後'; $text_cnt = substr_count($text, $search, -8, 10); echo $text_cnt; ?> |
実行結果
mb_substr_count()によって、指定したマルチバイト文字列の出現回数を数えています。
そのため、「パジャマ」は「3」、「ap」は「2」が表示されています。
まとめ
⚫︎ substr_count()とは対象の文字列から指定した文字列の出現回数を調べる関数である
⚫︎ substr_count()は最大で4つのパラメータを指定することができる
・ 検索対象の文字列(必須)
・ 出現回数を調べる文字列(必須)
・ 開始位置(任意)
・ 文字列の長さ(任意)
⚫︎ 出現回数を調べる文字列が見つかった場合に、substr_count()を使用すると指定した出現回数が返される
⚫︎ 出現回数を調べる文字列が見つからなかった場合に、substr_count()を使用すると「0」が返される
⚫︎ 出現回数を調べる文字列が重なった場合に、substr_count()を使用すると、重なっている文字列はカウントされない
⚫︎ substr_count()の開始位置に正の整数を指定すると、先頭から検索対象の文字列の検索開始位置をずらして、文字列の出現回数を数えることができる
⚫︎ substr_count()の開始位置に負の整数を指定すると、末尾から検索対象の文字列の検索開始位置をずらして、文字列の出現回数を数えることができる
⚫︎ substr_count()の文字列の長さが検索対象の文字列の長さより小さくなると、検索対象の文字列の範囲を制限して文字列の出現回数を数えることができる
⚫︎ substr_count()の文字列の長さが検索対象の文字列の長さより大きくなると、エラーが発生する
⚫︎ マルチバイト文字列の出現回数を数える場合は、mb_substr_count()を使用する