【PHP】preg_match関数を使って複数の値を配列に入れる方法
公開日:
更新日:
カテゴリー: PHP
preg_match関数で正規表現を利用して、(グループ化された)複数の値を配列に入れる方法を紹介します。
preg_match関数
preg_match関数は、正規表現を使ってマッチングおよびマッチしたデータを取得できる関数です。
preg_match(pattern, subject, matches, flags, offset)
「pattern」では正規表現を利用でき、そのパターンに該当するものが「subject」に存在するか確認します。
パターンとマッチしたものがあれば「1」を、マッチしない場合は「0」を返します(エラーが発生した場合は「false」を返す)。
第3引数以降は任意で設定します。詳しくはこちらを参照してください。
使用例
<?php //マッチング対象の文字列 $string = "かきく☆けこさ□しすせそ"; //パターンとマッチする部分をpreg_matchで抽出 preg_match( "/☆(.*?)□/", $string, $matches); //matches[0]の場合、パターン部分(☆と□を含めた文字列)が抜き出される echo $matches[0]; //matches[1]の場合、「(」と「)」に囲まれた部分のみ抜き出される echo $matches[1]; ?>
このプログラムを実行すると、結果はこのようになります。
☆けこさ□
けこさ
複数の値を配列に入れる
単純な例として、「#」から始まる4つの数字で構成されている文字列から、それぞれの数字を取り出してみたいと思います。
例:#0123
この場合、以下のプログラムで取得可能です。
<?php //マッチングさせる文字列 $string = "#0123"; //preg_match関数でマッチングし、マッチしたものを配列「$matches」に格納する preg_match("/#([0-9])([0-9])([0-9])([0-9])/", $string, $matches); //配列の中身を確認 print_r($matches); ?>
結果はこのようになります。
Array ( [0] => #0123 [1] => 0 [2] => 1 [3] => 2 [4] => 3 )
すなわち、「#」から始まる4つの数字で構成される文字列から3つ目の数字(上の例だと「2」)を出力したい場合、次のようにします。
echo $matches[3];
これで、「#0123」の「2」が出力されます。
解説
配列「$matches」に格納したい値(正規表現を使って取り出したい値)を「(」と「)」で囲みます(複数可)。
「[0-9]」は、0~9までのどれかの数字1文字を表します。
あわせて読んでほしい!
コメント
まだコメントはありません。
コメントフォーム