2017-10-05 1 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

+1

는 '^'문자열의 시작과 일치 (그리고 당신이'/'첫 번째 문자로 입력에서), 그리고'?'이스케이프해야합니다. [이 PHP 데모] (https://ideone.com/Zn5CQa)를 참조하십시오. –

+0

'print_r ($ param);'의 결과가 귀하의 질문에 무엇인지 알려 주시면 모든 독자를 도울 것입니다. 단지 "작동하지 않는다"는 것보다 약간 더 많은 정보를 제공합니다. –

+0

url을 구문 분석하는 더 좋은 방법은'parse_url()'과'parse_str()'을 살펴 보는 것입니다. – jeroen

답변

-1
  1. 당신은 당신의 레그 제어 문자 "."를 탈출해야 "?"당신은 시작해야 문자열을 의미 ^test
  2. 일치하는 "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