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