正規表現マッチのタイトル
範囲アドレス:HTTP://**.**.***.**:8010 /再上述のid = 1 /? 。
<?PHPの $キー = 'フラグ{********************************} 。 $レギュラー = するpreg_match( "/zkaq.*key.{2,9}:\/.*\/(key*key)/i"は、トリム($ _GET [ "ID"])、$マッチ)。 場合(レギュラー$ ){ 死ぬ( 'キー'。$キーを)。 }
コードの説明:
するpreg_match(正規表現の文字列にマッチ)
正規マッチサブストリング最初のマッチングは、戻り見つからない 0を返す、見つかった1
トリム($ _ GET [ "ID "]) 受け入れるために IDを見逃し文字列パラメータを
(レギュラー$){場合( 'キー:' $キーを。)死にます。}
IF(1){}行います。
(0){}があれば実行されません。
ダイ(); メッセージを出力し、現在のスクリプトを終了します。
これは、関数で の出口() のエイリアス機能。
問題解決のアイデア:する必要があると、文字列が正規表現にマッチする文字列はと行に戻ります旗。
正規表現は説明しました:
/ /で書くためにPHPの正規表現の間。 。:任意の単一文字を超えて改行\ nをマッチングに加えて。 * :直前の部分正規表現に0回以上一致します。 N {、} M:mおよびnは負でない整数であり、ここでn <= mです。マッチと少なくともn回m回まで一致します。例えば、「O {1,3}」「fooood」に一致する過去3 O中。コンマと二つの数字の間にスペースなしということに注意してください。 \:次の文字は特殊文字、またはリテラル、またはバック参照、または8進数のエスケープまたはとしてマークされています。例えば、「N-」「n」の文字に一致します。「\ n」が改行にマッチ。シーケンス「\\」マッチは「\」、および「\(」「(」一致。 I:タグは大文字と小文字を区別しない指定します。
/zkaq.*key.{2,9}:\/.*\/(key*key)/i
この正規表現を説明スプリット
1。
/zkaq.*/は:0-背後「zkaq」を示す改行\ n(nは非負の整数)を除く任意の単一の文字の数N。
zkaq(私は文字に従うことができないの背後に理解することができます)
2。
/ キー 2.9 / :.「は示し{} キー」2戻って改行\ nを除く任意の単一の文字の9。 keyhello(私は、「できるキーが後2-9文字を追加しました」)
3。
/:\ /.* \ / /:最初の":"。 "*"コロン文字については、 "\ /"スラッシュのための"/"訳で、続い0-を表すの改行\ nに加えて、Nを(N非負整数)外部任意の一文字。 :// (何も言わないように、私は文字を追加することはできません)
4。
/(キー * キー)/「KE」および「示しキー 0-間が」N文字「Y」(Nは非負整数です)。 keykey(私は文字を追加することはできません)
の組み合わせ:
zkaqkeyhello:// keykey
Unicodeは、このをコードします:
3A%zkaqkeyhello // KeyKey