ITメモ
PHP
PHP マニュアル(PHP Official Web)
Basic Knowlege / 基礎知識
「CentOS」にPHPをインストール方法PHPファイルの作り方外部「クラスファイル」「関数ファイル」を読み込む方法変数の使い方定義済み変数の使い方関数の使い方配列の使い方クラスの使い方ヒアドキュメントの使い方PHPの演算子条件分岐
Access Info / アクセス インフォ
IPアドレスを確認する方法アクセスされたURLパスを確認する方法PCとスマートフォンの判定アクセスしたページから特定ページにリダイレクトさせる方法
ファイル・ディレクトリ
ファイルとディレクトリの操作方法(作成・確認・削除)ディレクトリ内のファイル・ディレクトリPath(URL)を配列に格納する方法
ファイルの読み込みと書き込み
「file_get_contents」関数を使ってファイルを読み込む方法「readfile」関数を使ってファイルを読み込む方法「file」関数を使ってファイルを読み込む方法「fread」関数を使ってファイルを読み込む方法「fgets」関数を使ってファイルを読み込む方法「fwrite」関数を使ってファイルに書き込みをする方法
チェック
「is_file」関数 - 指定パスがファイルかをチェックする方法「is_dir」関数 - 指定パスがディレクトリかをチェックする方法
画像ファイル
画像ファイルのIPTC情報を取得する方法 画像ファイルをZipファイル形式でダウンロードさせる画像をコピーする方法画像のキーワード情報を取得する方法画像ファイルから「EXIF」ヘッダを読み込む画像の大きさ・画像情報を取得する
情報
「PHP」の出力系関数 - プログラミングで必須のデータ内容をチェックする方法関数の返り値を複数で受け取る方法使用可能なメモリ使用量を変更する方法mb_send_mail - エンコード変換を行ってメールを送信する「Google」「Goolge Map]に渡した値が文字化けするときの解決方法PHPで日付比較をする方法
文字列
「文字列」の長さを取得する方法【 substr 】「文字列」から一部分を取り出す方法【 explode 】「文字列」を分割する方法【 preg_split 】正規表現で「文字列」を分割するランダムな数字を取得する方法
文字の検索
「strpos」関数で指定文字の最初の位置を確認する方法「preg_match」関数で指定した「正規表現」で検索する方法
文字の置換
「str_replace」関数で指定した文字列を置き換える方法「preg_replace」関数で指定した文字列を置き換える方法
文字の削除
「trim」関数 - 文字列の両端から指定文字を削除する方法「ltrim」関数 - 文字列の先頭から指定文字を削除する方法「rtrim」関数 - 文字列の末尾から指定文字を削除する方法文字列の中にある「文字」を削除する方法「改行」を削除する方法文字列の「空白(スペース)」を削除する方法
配列
配列に値を追加する方法配列の値を削除する方法配列の有無を確認する方法配列の中から重複した値を削除する配列の空の値を削除する配列の並び順を変えるis_array - 変数が配列かを確認するin_array - 配列の中に指定した値があるか確認するimplode - 値の間に文字加えて配列を文字列に変換するarray_merge - 配列と配列を結合する方法
ライブラリ
「PHP」で使えるライブラリの種類「GD」ライブラリの使い方
Server / サーバー
サーバーの最大実行可能時間を変更する





【PHP】「preg_match」関数で指定した「正規表現」で検索する方法

【PHP】
「preg_match」関数で指定した「正規表現」で検索する方法




「preg_match」関数は、
「正規表現」で指定した「文字」「文字列」を
検索対象から検索し、
見つかったら、返り値で知らせてくれる関数。

検索文字が見つかった場合の返り値は、「1」
検索文字が見つからない場合の返り値は、「0」
検索が失敗した場合の返り値は、「false」

オプション引数を指定することにより、
結果を「配列」で受け取ることも可能。

配列key「0」=「一致した文字」
配列key「1」=「一致した文字の最初の文字位置」



PHPには、指定した文字を検索してくれる関数がある。


文字列の有無を確認する関数は、
・「strpos」関数 = 文字列内に指定した文字列の有無を確認し、一番最初の位置を数字で返す。
がある。
・「strstr」関数 - 指定した文字列の最初の位置を数字で返す
・「preg_match」関数 - 正規表現で指定した文字列の最初の位置を数字で返す
・「preg_match_all」関数 - 正規表現で指定した文字列を全て検索し配列で返す

・「array_search」関数 - 配列の値を検索し、一致した値のキーを返す
・「in_array」関数 - 配列内の値を検索し、結果を論理値で返す
などがあります。



「preg_match」関数の書式


「preg_match」関数は、
指定した「文字列」「正規表現」に一致する文字を、
検索対象の文字列から検索する関数。

「文字列」の有無検索だけならば、
「strpos」関数の方が動作は早い。


「preg_match」関数を実行すると

検索文字が見つかった場合の返り値は、「1」
検索文字が見つからない場合の返り値は、「0」
検索が失敗した場合の返り値は、「false」

という結果で確認できるようになっている。


オプションを引数に指定することにより、
結果を「配列」で受け取ることも可能。

配列key「0」=「一致した文字」
配列key「1」=「一致した文字の最初の文字位置」



「preg_match」関数の基本書式

preg_match(
string $pattern,
string $subject,
array &$matches = null,
int $flags = 0,
int $offset = 0
): int|false


preg_match(検索する文字列, 検索対象の文字列, 結果を収納する配列, フラグ, オフセット) :返り値(0・1・false)
preg_match(正規表現, 検索対象の文字列, 結果を収納する配列, フラグ, オフセット) :返り値(0・1・false)

preg_match(正規表現, 検索対象の文字列) :返り値(0・1・false)
preg_match(正規表現, 検索対象の文字列, 結果を収納する配列) :返り値(0・1・false)
preg_match(正規表現, 検索対象の文字列, 結果を収納する配列, フラグ) :返り値(0・1・false)
preg_match(正規表現, 検索対象の文字列, 結果を収納する配列, フラグ, オフセット) :返り値(0・1・false)


$Text_Result = preg_match("検索したい文字列", $変数名);
$Text_Result = preg_match($変数名, $変数名);
$Text_Result = preg_match('/正規表現を記述/', $変数名);



「preg_match」関数のパラメータ

  
  
pattern 検索したい「文字」「文字列」「正規表現」。
subject 検索対象の文字列。
matches 「matches」パラメータを指定すると、
配列形式で、「検索結果」が代入される。

配列key「0」=「一致した文字」
配列key「1」=「一致した文字の最初の文字位置」
flags 「flags」パラメータには、
下記のフラグを指定することができるようになっている。

PREG_OFFSET_CAPTURE
「PREG_OFFSET_CAPTURE」フラグを指定すると、
検索結果の文字位置が、「バイト」単位で返されるようになります。


PREG_UNMATCHED_AS_NULL
「PREG_UNMATCHED_AS_NULL」フラグを指定すると、
検索して、合致しなかった検索文字列の結果を、配列に格納するときに、
通常の「空文字("")」ではなく、「null」を格納する。
offset 「offset」パラメータは、
検索対象文字列の検索開始位置を指定するパラメータ。
「flag」パラメータに、「PREG_OFFSET_CAPTURE」を指定することで、
「検索開始位置」を「バイト」単位で指定することもできる。
戻り値 「preg_match」関数で実行した結果、

検索文字が見つかった場合の返り値は、「1」
検索文字が見つからない場合の返り値は、「0」
検索が失敗した場合の返り値は、「false」
エラー / 例外 指定された検索のための「正規表現」が認識できない場合、「E_WARNING」エラーが発生する。



「preg_match」関数のサンプル書式

if (preg_match("検索したい文字列", "検索対象の文字列")) {
検索が合致した時の処理を記述するエリア
} else {
検索が合致しなかった時の処理を記述するエリア
}




Back

「正規表現」で記述するときの書式


「正規表現」で、
検索した「文字」「文字列」を指定する場合、
「preg_match」関数で認識できる書式にしないと、
「正規表現」が機能しない。


「preg_match」関数で認識する「正規表現」の書式は、
「'/正規表現を記述/'」
「'/\b正規表現を記述\b/i'」
と記述する。
文字列と同じ「'(シングルクォート)」で囲み、
「デミリター」の「/(スラッシュ)」で「正規表現」部分を囲みます。

テストをしていたところ、
この書式でないと、「preg_match」関数は正常に機能しませんでした。

実行環境にもよるかもしれません。



「デミリター」の「/(スラッシュ)」は、
「正規表現」としては、意味を持っていない記号で、
書式を整える「デミリター」として利用されている。


「preg_match」関数に記述する「正規表現」の書式



$Text_Result = preg_match('/正規表現を記述/', $変数名);



正規表現の書式

"記号/正規表現/記号"


記号「i」は、文字の大小を区別しない検索をする指定

"/正規表現/i"


記号「\b」は、単語の「境界」を示す

単語の前後を指定したり、指定文字だけの単語などを指定するときに使用する。

"/\b正規表現\b/i"正規表現でした文字だけの単語
"/\b正規表現/i"単語の先頭が、指定した文字の単語
"/正規表現\b/i"単語の後部が、指定した文字の単語



Back