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() ); }