【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文字を表します。
あわせて読んでほしい!
コメント
まだコメントはありません。
コメントフォーム



