2016-11-18 15 views
1

user-profile/id=3のような文字列を正規表現形式にする必要があります。私は'user-profile/id=\d+$''user-profile/([a-z][.][0-9]+)/?$'を試しましたが、どれも動作していません。正しい方法は何ですか?WordPressの正規表現が正常に動作しない

+0

を参照してください。正規表現でこの文字列? –

+0

'id = 3'部分だけを抽出したいだけです。 –

+0

その場合、私の答えがあなたを助けてくれることを願っています。 –

答えて

1

あなたの文字列はalwです上のような形式のものであれば、正規表現は必要ありません。

explode("/", $s)[1] 

this demoを参照してください:explode単なる使用してください。

別の非正規表現のアプローチ:1つの文字からINGのsubstrを取得し、その後後/を含む部分文字列を取得するためにstrstrを使用し、そして:

substr(strstr($s, "/"),1); 

はあなたから取得したい何another PHP demo

+0

私の答えがあなたに役立つことが判明した場合、upvotingを検討してください([Stack Overflowについてのアップルのしくみ?](http://meta.stackexchange.com/を参照してください)。質問/ 173399/how-to-upvote-on-stack-overflow))。 –

1

問題は、/文字をバックスラッシュでエスケープしていないことです。

この問題を解決した直後に直面する可能性があるもう1つの問題は、末尾を意味する$文字を使用していることです。後に複数の文字がある場合は、単一のスペースであっても一致しません。

あなたがしようとした場合:

user-profile\/(id=\d+) 

あなたはおそらく、それがうまく一致していることを見つけることができます。私が追加した括弧はキャプチャグループ#1のid=3をキャプチャします。

+0

正規表現で '/'をエスケープする必要はありません。 –

0

id=3を抽出したい場合は、preg_replaceを使用することをお勧めします。同様に:

$str = 'user-profile/id=3'; 
$after_preg = preg_replace('/user-profile\//', '', $str); 
echo $after_preg; 

あなたは次のようにそれができるだけの数を取得したい場合:

$str = 'user-profile/id=3'; 
$after_preg = preg_replace('/user-profile\/id=/', '', $str); 
echo $after_preg; 

それについての詳細をあなたが文字列かどうかを確認したい場合は、PHP Manual: preg_replace

で読むことができますuser-profile/id=3のような正規表現を使用することができます:

user-profile\/id=\d* 
関連する問題