preg_matchで目的の文字列を取得する方法

スポンサーリンク

こんばんは。ファガイです。本日は、PHPでpreg_matchを上手く使う方法を軽く紹介します。

問題

例えば、「hoge#fuga#hoge」という文字列からfugaを取得したい場合です。

ソース

“`
<?php

$pattern = "/#.*#/";
preg_match($pattern, 'hoge#fuga#hoge', $matches);
var_dump($matches);
“`

結果

array(1) {
  [0]=>
  string(6) "#fuga#"
}

上記のように#がくっついて付いてきてしまいます。

解決策

実は、preg_matchにはキャプチャ用のサブパターンというものが設定することが出来ます。

これは、私も実はあまり理解していないのですが、解決策は以下となります。

ソース

“`
<?php

$pattern = "/#(.*)#/";
preg_match($pattern, 'hoge#fuga#hoge', $matches);
var_dump($matches);
“`

結果

array(2) {
  [0]=>
  string(6) "#fuga#"
  [1]=>
  string(4) "fuga"
}

と、このように要素1に対象の文字列が入ります。
なので、matches[1]を取得したらいいですね~。

ではではー。

コメント

タイトルとURLをコピーしました