以前、文字列についてチェックする方法と操作方法について書きました。
PHPでは、文字列をさらに詳細にチェックする方法があります。
文字列チェックを行うために、preg_match()関数を
使うことができます。今回は、検索条件となる文字列をパターンと呼び
検索対象となる文字の並びを文字列と呼ぶこととします。
preg_match(/パターン/,文字列)
preg_match()関数は、パターンを「/ /」で囲みます。
この関数では、文字列にパターンが一致する部分がある場合に、
戻り値として一致した部分の長さを返します。
サンプルコードの実行結果はこちら
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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
<!doctype html> <html> <head> <meta charset="utf-8"> <title>正規表現を使い文字列検索</title> <link rel="stylesheet" href="../style.css"> </head> <body> <?php $pat = array("apple","orange","lemon"); $str = array("melon","peach" ,"lemon"); ?> <table border="3"> <tr> <th>pattern</th> <th>string</th> <th>match</th> </tr> <?php foreach($pat as $valuePat){ foreach($str as $valueStr){ echo "<tr>"; echo "<td>{$valuePat}</td>"; echo "<td>{$valueStr}</td>"; $match = preg_match("/" . $valuePat . "/", $valueStr ); if( $match ){ $match = "YES"; }else{ $match = "NO"; } echo "<td>{$match}</td>"; echo "</tr>"; } } ?> </table> </body> </html> |
サンプルコードを実行すると、パターンと文字列が一致している行は
matchの箇所が「YES」と表示されいます。
それ以外は「NO」と表示されます。
「apple」という文字列の中には「lemon」という文字列はないので
「NO」と表示され、「lemon」の中には「lemon」はあるので
「YES」と表示されます。
preg_match()関数には「パターン」の部分には
正規表現(regular expression)
という表現を指定することができます。
「/ $valuePat /」と指定する方法は、簡単な正規表現の1つです。
「パターン」で指定したものが文字列に含まれているなら
preg_match関数は「1」を返し、それ以外なら、
preg_match関数は「0」を返します。PHPでは、0をfalse、
それ以外をtrueとするので、YES,NOが表示されます。
正規表現を使う場合、パターンが文字列に含まれることを
パターンが文字列にマッチ(match)する。
といいます。「木」というパターンであるなら、
「青木」「木村」「木更津」という検索対象文字列がマッチします。