preg_matchにおけるUnknown modifierエラーの解消

kensuke-iizuka 393views 更新:2016年9月1日

PHPで正規表現を用いた文字列マッチング関数のpreg_matchを用いるときに正規表現のパターンをデリミタで囲まないと Unknown modifierエラーが出てしまいます。デリミタはPHPマニュアルでもいくつか紹介されていますが “<>”で囲むことで解決できます。 下のコードはWordPressで特定のURLにアクセスした際にホーム画面へのリダイレクトを行うコードです。 例えば、example.com/hoge=48635とかにアクセスしようとした時にホームへ飛ばす感じです。(アーカイブページや見せたくないページヘのアクセス回避)

//変更前(エラーが出てしまう)
$url = $_SERVER["REQUEST_URI"];

if (preg_match("hoge/([0-9]+)/?$", $url) === 1){
  //ホーム画面へリダイレクト
  header( "location: " . home_url() );
}
//変更後(エラー解消)
$url = $_SERVER["REQUEST_URI"];

//$urlをデリミタで囲む
if (preg_match("<hoge/([0-9]+)/?$>", $url) === 1){
  //ホーム画面へリダイレクト
  header( "location: " . home_url() );
}

ログイン / 新規登録してコメントする

このソースコードをストックして後で利用したり、作業に利用したソースコードをまとめることができます。

こちらもお役に立つかもしれません