2016-06-20 6 views
2

私はpreg_matchを使用して、URLが特定のパターンを持っているかどうかを判断しようとしています。相続人は私がこれまで持っているもの:ページがホームページにリダイレクトされるべきでない場合 PHP - preg_match regex

if(! preg_match('^lease/([0-9]+)/?', $url)) { 
    wp_redirect(home_url(), 301); 
} 

は基本的に私は、URLパターンは以下の通り(数字が続くリースキーワード)であるかどうかを確認したいと。私はこの1つでいくつかの助けが必要ですので、私は正規表現では良くないです。 TIA。 www.example.com/lease/324

+2

使用 '場合(ことができますので、あなたは^.*?一部を省略することができます! preg_match( '〜^。*/lease /([0-9] +)/?$〜'、$ url) ' –

答えて

1

あなたがする必要がある。しかし、それはあなたがこれを試すことができますlease/{number}

が含まれている場合は、ちょうど確認したいように見えます/leaseの前に任意の文字を許可し、文字列のアンカー$の末尾と正規表現の区切り文字(私はを使用してスラッシュをエスケープしないでください)

if(! preg_match('~^.*/lease/([0-9]+)/?$~', $url) 

それともpreg_matchは、部分的な一致が

if(! preg_match('~/lease/([0-9]+)/?$~', $url) 
-1

キャプチャグループ(カッコ)は、末尾の数字がわからない限り、必要ありません。

if (! preg_match("/lease\/[0-9]+/", $url)) { 
    wp_redirect(home_url(), 301); 
} 

が、その後、リース、スラッシュ、1+番号が含まれてい

+0

通常、型について具体的には良いですが、' false == = preg_match() ' "[' preg_match() '](http://php.net/manual/en/function.preg-match.php)は、指定された件名にパターンが一致する場合は' 1'を返し、そうでない場合は '0'を返し、エラーが発生した場合はFALSEを返します。 – Sam

+0

また、 '[0-9]'は '\ d'でもかまいません。 – alex