2017-10-05 8 views
-3
$request = '/test.php?action=save&key=e7s2uHhKKtcM32cHKUKM&login=test'; 
$param = preg_match("#^test.php?action=save&key=(\w+)&login=(\w+)($)#", $request, $match); 
print_r($param); 

これは機能しません。直し方?URLのPHP preg_match

あなたは、文字列を意味 ^testに一致している あなたのプリプレグ制御文字をエスケープする必要が
+1

は '^'文字列の先頭に一致する(とあなたが持っている '/'最初の文字として入力して)、および '?'エスケープする必要があります。 [this PHP demo](https://ideone.com/Zn5CQa)を参照してください。 –

+0

あなたの質問に 'print_r($ param);'の結果が何であるか教えてください。それはちょうど "それが働いていない"と述べるよりも少しだけ多くの情報を与えます。 –

+0

urlを解析するより良い方法があります。 'parse_url()'と 'parse_str()'を見てください。 – jeroen

答えて

-1
  1. .」と「?
  2. あなたの文字列が「/test
  3. で始まりながら、「test」で始まる必要がありますがあなたがエスケープ文字「\」をエスケープする必要がないように、単一ティックを使用することを強くお勧めします。

    $param = preg_match('#^/test\.php\?action=save&key=(\w+)&login=(\w+)($)#', $request, $match); 
    print_r($param); // 1 
    print_r($match); // Array (
    // (
    //  [0] => /test.php?action=save&key=e7s2uHhKKtcM32cHKUKM&login=test 
    //  [1] => e7s2uHhKKtcM32cHKUKM 
    //  [2] => test 
    //  [3] => 
    //) 
    
+0

ありがとうございます。それは私のために働いています:-) – user3608884