2017-10-04 1 views
-2

URL 인 문자열에서 두 값을 가져 오는 작은 스크립트를 만들고 있습니다. 아래 코드에서 예제 URL을 볼 수 있으며 두 자리 "i ="값과 더 긴 "l ="값을 추출하려고합니다.PHP에서 Regex 배열 인덱스 추출

나는 이것에 관해 광범위한 조사를했고, 스택 오버 플로우에 관한 다른 모든 질문들은 꽤 단순 해 보였다. 다음 코드가 작동하지 않는 이유

는 내가 슈퍼 근접 합니다만, 궁극적으로 내가 파이썬/장고 사나이 확신 그리고 난에 대한 손실에 있어요 :

$s = "http://mwo.smurfy-net.de/mechlab#i=16&l=71a1896409db5818783971b72ba043f5f3a44fad"; 
$matches = array(); 
$result = preg_match('/^i=(?P<iVal>[0-9]+)&l=(?P<lVal>[a-z0-9]+)$/siU', $s, $matches); 
echo $matches['iVal']; 
echo $matches['lVal']; 

I을 실행하면 두 배열 값, iVal 및 lVal이 정의되지 않은 방법에 대한 오류를 가져옵니다.

코드 자체 또는 정규식에 문제가 있는지 확실하지 않습니다. 어떤 도움을 주시면 감사하겠습니다.

$result = preg_match('/i=(?P<iVal>[0-9]+)&l=(?P<lVal>[a-z0-9]+)$/siU', $s, $matches); 
//    here ___^ 
+0

은 '^'라인의 시작 위치를 어서 : – ctwheels

답변

0

캐럿을 제거한다. 'U'플래그없이`i = (? P [0-9] +) & l = (? P [a-z0-9] +)`를 사용하십시오. 어떤 점에서`l '다음에 다른 변수를 추가하는 경우를 대비해서 말하겠다.