phpで正規表現したよ

このエントリーをはてなブックマークに追加

iyamaです。

更新遅くなってすみません。
今日は珍しくphpで正規表現使ったので、そのお話。


 
ある文字列($str)の中から、日付(YYYY/MM/DD)のみ取得しようと思い、
以下のようなコードを書きました。


$str = "xx2012/01/13xxxxx";
$pattern = '/[0-9]{4}¥/[0-9]{2}¥/[0-9]{2}/';
$result = array();

preg_match($pattern, $str, $result);
var_export($result);

こうすると、結果


array (
    0 => "2012/01/13"
)

みたいなのが、入ってくると思います。
これでいいんですけど、年、月、日の値も別々に欲しいなーって考えたとき、
この値($result[0])をsplitとかやだよ。。って思ったんですけど、
なんと、正規表現にいいのがありました。
 

これです↓
$patternのとこに注目してください。


$str = "xx2012/01/13xxxxx";
$pattern = '/([0-9]{4})¥/([0-9]{2})¥/([0-9]{2})/';
$result = array();

preg_match($pattern, $str, $result);
var_export($result);

出力結果


array (
    0 => "2012/01/13",
    1 => "2012",
    2 => "01",
    3 => "13",
)

ね。便利だね。
最初に、$patternで指定した全体の値。
次に()でくくった部分を順番に配列に格納。
素敵な仕様です。
 

。。。。。て、これは一般常識ですかね?
正規表現知らなすぎですよね。精進します。。
以上です。

※preg_match()のところ、修正しました。(2012/01/14)

    • さかい
    • 2012 01/14 12:49pm

    こうじゃなかったけ

    preg_match($str, $pattern, $result);

    preg_match($pattern, $str, $result);

      • iyama
      • 2012 01/15 12:09am

      ほ、ほんとだ。。!間違えました。
      ご指摘ありがとうです。

return top