2月 072015
 

こんばんは。ファガイです。本日は、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]を取得したらいいですね~。

ではではー。

Pocket

 Posted by at 8:54 PM

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>


*