preg_match関数

正規表現ではパターンを定義し、対象の文字列がそのパターンに当てはまる(マッチする)かどうかを調べるために使います。そこでパターンにマッチしているかどうかを確認するために使用される関数がpreg_match関数です。

pattern で指定した正規表現により subject を検索します。

引数:
  pattern  検索するパターンを表す文字列
  subject  入力文字列
  matches  matches を指定した場合、検索結果が代入されます
  flags  フラグ
  offset  検索の開始位置

戻り値:
  pattern がマッチした回数を返します

1番目の引数にはパターンを表す文字列を指定します。書式は次のようになっています。

/パターン/

preg_match関数を使う場合、パターンの両端をデリミタと呼ばれるもので囲います。今回はデリミタとして「/」を使っていますが他の文字を使うことも出来ます。詳しくは次のページで確認します。

2番目の引数には対象となる文字列を指定します。

3番目以降の引数は省略可能です。詳しくは別のページで確認します。

関数を実行すると戻り値としてマッチした回数を返します。preg_match関数は1回マッチに成功すれば終了するため戻り値は0(マッチに失敗)又は1(マッチに成功)のいずれかとなります。またエラーが発生した場合は false を返します。

PHPにおいて0及びfalseは共に論理値の偽ですので、マッチするかどうかを判別するには次のように記述します。

$pattern = '/He/';
$str = 'Hello';

if (preg_match($pattern, $str)){
  print('マッチしました<br />');
}else{
  print('マッチしません<br />');
}

上記では変数「str」に含まれている文字列に変数「pattern」で指定したパターン「He」にマッチするかどうかを判別します。

サンプルプログラム

では簡単なプログラムで確認して見ます。

sample2-1.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<title>PHP正規表現</title>
</head>
<body>

<p>

<?php
$pattern = '/He/';
$str = 'Hello';

if (preg_match($pattern, $str)){
  print('マッチしました<br />');
}else{
  print('マッチしません<br />');
}
?>

</p>

</body>
</html>

上記のファイルをWWWサーバのドキュメントルート以下に設置しブラウザからアクセスすると次のように表示されます。

preg_match関数