正規表現で合致するものを探すのに便利なpreg_match関数。
これの検索パターンに変数や配列を使うと、ますます便利なんだけど、結構エラー出たりするんだよね(´;ェ;`)
ちなみに、よくやる間違いとして、以下は割と有名(?)っぽい。
if(preg_match($hoge1,$hoge2))
これだと、デリミタがないので正規表現とみなされないんだと。
なので、上記に気を付けてコード書いてみたんだけど、結局以下のようなコードで以下のエラーが出た!
▼コード
$hoge1 = "example\.com"; $hoge2 = "http://example.com/aaa/bbb/"; if(preg_match('/'.$hoge1.'/',$hoge2)){ echo "合致!"; }
▼エラー
Warning: preg_match(): Unknown modifier 'r' in ~
よくわ分かんなかったけど色々調べてみると、これ、どうやら検索対象がURLだった事で、バックスラッシュとデリミタが喧嘩したのが原因みたい。
なので、以下のようにデリミタを波括弧({})にしたところ解決した。
▼コード
$hoge1 = "example\.com"; $hoge2 = "http://example.com/aaa/bbb/"; if(preg_match('{'.$hoge1.'}',$hoge2)){ echo "合致!"; }
コメント