
スキルアップ
2021.01.08
社会人の勉強は何をするべき?勉強のメリットと勉強方法も紹介!
社会人になっても勉強は必要!と言われても、何を勉強したら良いのか迷いますよね。仕事に関わるスキルを磨いたり、資格を取得したりする他にも、勉強できることはたくさんあります。ここでは、社会人が勉強するメリット、オススメの勉強 […]
PHP
2019.04.18
PHP では、関数 strpos や preg_match を使用して文字列を検索することができます。
今回は PHP で文字列を検索する方法を紹介します。
尚、本サイトでは XAMPP( ザンプ )という開発環境を使用しています。
XAMPP のインストール方法や起動方法については以下の記事をご参照下さい。
PHP【 開発環境 】XAMPP インストール
PHP【 開発環境 】XAMPP の使い方
最終更新日:2019年4月18日
1.strpos で文字列を検索
2.preg_match で文字列を検索
strpos 関数は、文字列中のある文字列を検索する関数です。
実行すると、指定した文字列が最初に現れる位置が 検索対象文字列の 1 文字目を 0 とする数値で返ります。
strpos 関数は 次のように記述して使用します。
strpos ( 検索対象文字列, 指定文字列 [, 検索開始位置 ] ) ;
第 1 引数には、検索対象となる文字列を指定します。
第 2 引数には、検索する文字列を指定します。
第 3 引数には、検索開始位置を検索対象文字列の 1 文字目を 0 とする数値で指定することができます。
第 3 引数に負の数を指定すると、検索対象文字列の末尾から 数値分戻った位置が検索開始位置となります。
strpos 関数を使用して 文字列を検索してみます。
下記のようなソースファイルを作成して ブラウザからアクセスすると、次のような表示になります。
( ソースファイルの作成方法についてはソースファイルを作成を、サーバの起動方法等についてはサーバを起動を、それぞれご参照下さい。)
<?php $str = "All is well that ends well."; echo strpos($str, "well"); echo "<br><br>"; echo strpos($str, "well", -5); ?>
「 echo 」は、データを出力するために使用する PHP の命令です。
「 strpos($str, “well”) 」では、検索対象文字列の中で 検索文字列の先頭の文字「 w 」が最初に現れる位置( 検索対象文字列の先頭文字 A を 0 とする数値で、スペースもカウントする )の 7 が返ります。
「 strpos($str, “well”, -5) 」では、検索開始位置を負の数値で指定しているので、末尾から 5 文字分遡った「 w 」から末尾までが検索対象となります。
そして、後ろの方にある 検索文字列 well の先頭の文字「 w 」の位置である 22 が返ります。
preg_match 関数は、文字列を正規表現で検索する関数です。
実行すると、指定した正規表現が含まれていた場合は「 1 」、含まれていなかった場合は「 0 」、正常に処理できなかった場合は「 false 」が返ります。
preg_match 関数は 次のように記述して使用します。
preg_match ( 正規表現, 検索対象文字列 [, $array [, オプション [, 検索開始位置 ] ] ] ) ;
第 1 引数には、検索する正規表現のパターンを指定します。
第 2 引数には、検索対象となる文字列を指定します。
第 3 引数には、配列変数を指定することができ、配列変数[0] にはパターン全体に合致した文字列が格納され、配列変数[1] 以降には 1 番目以降の各キャプチャ用サブパターンに合致した文字列がそれぞれ格納されます。
第 4 引数には、次のオプションを指定することができます。
・PREG_OFFSET_CAPTURE:各検索結果と共にオフセット値も返る( 第 3 引数の戻り値である文字列とオフセット値を 1 つの配列として、それが各戻り値分格納された 2 次元配列が返る )
第 5 引数には、検索開始位置を検索対象文字列の 1 文字目を 0 とする数値で指定することができます。
preg_match 関数を使用して文字列を検索し、パターンに合致した文字列が配列変数に格納されるようにしてみます。
下記のようなソースファイルを作成して ブラウザからアクセスすると、次のような表示になります。
( ソースファイルの作成方法についてはソースファイルを作成を、サーバの起動方法等についてはサーバを起動を、それぞれご参照下さい。)
<pre> <?php $str = "0123456789"; preg_match("/(01234)(56789)/", $str, $ary, PREG_OFFSET_CAPTURE); print_r($ary); ?> </pre>
preg_match 関数の第 3 引数に配列変数を指定すると、パターン全体に合致した文字列及び各キャプチャ用サブパターンに合致した文字列が 指定した配列変数に格納されます。
そして 第 4 引数に「 PREG_OFFSET_CAPTURE 」を指定すると、第 3 引数で指定した配列変数は、検索で合致した文字列とそのオフセット値( 先頭文字の位置 )がペアで格納される 2 次元配列となります。
print_r 関数や <pre> ~ </pre> についてはprint_r で出力をご参照下さい。
スキルアップ
2021.01.08
社会人になっても勉強は必要!と言われても、何を勉強したら良いのか迷いますよね。仕事に関わるスキルを磨いたり、資格を取得したりする他にも、勉強できることはたくさんあります。ここでは、社会人が勉強するメリット、オススメの勉強 […]
スキルアップ
2021.01.08
独学でフリーランスエンジニアを目指す方へ向けて、未経験からフリーランスエンジニアになるための手順や独学でのプログラミング学習法、必要なスキルなどをご紹介します。 独学とスクールどちらで勉強すればいいか迷っている、そもそも […]
スキルアップ
2021.01.05
高卒女子の就職内定率は大卒女子とほぼ同じ。でも知恵袋には「高卒女性が応募できる正社員求人って少ないのでは…?」と心配する人たちもいるようですが、資格なしでも高収入が期待できる仕事はたくさんあります。そこで今回は現役女子高 […]
スキルアップ
2020.12.30
プログラマの仕事に興味はあるものの「プログラマの仕事はきつい」というのを耳にして不安に思ったりしていませんか?なぜプログラマの仕事はきついといわれるのか?そもそも未経験からでもプログラマになれるのか?本記事では、プログラ […]
スキルアップ
2020.12.21
技術の進歩に伴い、IT業界も人気の業界のひとつとなりましたが、「IT業界はブラック企業が多いからエンジニアを目指すのはやめとけ」という声も聞こえてきます。これは本当なのでしょうか?この記事では、実際の疑問の声に対する理由 […]
スキルアップ
2020.12.18
仕事にやりがいを感じられず悩んではいませんか?本記事では、仕事で満足感を得るにはどうすればいいのか、やりがいの感じやすいお仕事7選、仕事にやりがいを見つけるポイント、転職しなくても仕事の満足度をあげる方法などをご紹介しま […]
INTERNOUS,inc. All rights reserved.