2012-02-12 14 views
0

からパラメータを抽出します。REGEX:私はURL文字列から次のパラメータを抽出するために使用する必要がありますどのようなREGEX URL

/?c=135&a=1341 

私は基本的に、この文字列からaパラメータの値を取得したいです。

おかげで、

+0

このURLには2つのパラメータがあります。あなたはどれが欲しいですか? – bmargulies

+0

私の質問で指摘したように、私は 'a'値を抽出することを検討しています。私はすでにそれを解決しました..回答フォーム 'バンチング 'を参照 –

答えて

1

あなたがの値を抽出すると、値は桁数に1から構成され、この正規表現が動作する必要がある場合:

preg_match("/a=(\\d{1,})/ui", $_SERVER['REQUEST_URI'], $matches) 

その後a値を表示するために$matches[1]を使用

+0

私はこの作業をすることができませんでしたが、次の解決策を見つけることができました:' preg_match( "/ \?c =(\ w +)\&a =(\ w + )//"、$ _SERVER ['REQUEST_URI']、$ matches);'助けてくれてありがとう... –

+0

もちろん、上記のPHPは:preg_match( "/ a =(\\ d {1、})/ ui "、$ searchText) –

+0

完了しました。これは機能します。そうですね、PHPを使用する前にそれを指摘しておきました。すべてが今すぐうまくいきます... t –

1

もう少し一般的な質問に答えるつもりですが、これはあなたの提案ですか?接頭辞はURIリクエスト文字列から特定のパラメータを削除しようとしています(これは先頭を削除しますか?)。この場合、mod_rewriteエンジンを使用して、これを.htaccessファイルに実装できます。

クエリパラメータa = XXXがどこに来るかを必ずしも知っているわけではないので、ルールはやや複雑です。したがって、aが最初、aが後続のパラメータの場合に異なる正規表現が必要です。あなたは((?=a=)regexp1|regexp2)によってこれを行うので、ここにある:最初のものである場合

RewriteEngine on 
RewriteBase \ 
RewriteCond %{QUERY_STRING} ^(?(?=a=)a=[^&]*&?(.*)|(.*)&a=[^&]*(&.*)?) 
RewriteRule ^.*    $0?%1%2%3      [L] 

% 1(%3が空白になる場合があります)ブックエンドをそれ以外の場合は%2残りの部分を含んでおり、%3。

特定のスクリプトでこれを実行したい場合は、ルール正規表現^.*をより具体的なものに置き換えてください。

お楽しみください:-)

+0

同じ正規表現は 'preg_match()'で動作しますが、なぜ '$ _GET'を使用していないのですか? – TerryE

+0

私は.htaccessから離れて滞在を試みた。私は前にそれを試みたが、うまくいかなかった。多分私のシステムに何か問題があったかもしれない。私はチェックします... –

+0

私はまだ$ _SERVER ['REQUEST_URI']を編集していて、 '$ _GET'を使うのではなく、私のQをダックしたことに気づきました:-) – TerryE

関連する問題