2017-10-05 83 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); 

這是行不通的。怎麼修?PHP網址preg_match

+1

的''^字符串的開頭匹配(你有'/'在輸入作爲第一個字符)和'?'必須進行轉義。參見[這個PHP演示](https://ideone.com/Zn5CQa)。 –

+0

如果你告訴我們'print_r($ param)'的結果在你的問題中,它會幫助任何讀者。它提供的信息略多於描述「它不工作」的信息。 –

+0

有更好的方法來解析一個url,看看'parse_url()'和'parse_str()'。 – jeroen

回答

-1
  1. 你需要逃避你的預浸控制字符「.」和「?
  2. 您匹配^test意味着字符串的開頭爲「test」,而你的字符串「/test
  3. 開始我強烈建議使用單個刻度,所以你不必逃避你的轉義字符「\」。

    $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