2011-10-28 2 views
-1

저는 웹 프로그래밍, 특히 정규 표현식을 처음 사용합니다. 문자열에서 십진수를 추출하는 보편적 인 코드를 만들고 싶습니다. 왜냐하면 십진수와 좌표를 가져올 때 항상 십진수를 사용해야한다는 좌표를 알았 기 때문입니다. 우리가 진짜로 문제는 좌표가 소수점 앞에 (-)를 뺀 것입니다. 이 문제를 해결하는 방법. I 얻을문자열에서 정규식으로 표시된 십진수

$string = 'http://maps.google.com/maps/api/staticmap?size=186x186&sensor=false&markers=color: red|size:mid|42.052661,-88.049441'; 

preg_match_all('#(([0-9]+){1,3}\.([0-9]+))#is', $string, $matches); 

print_r($matches[1]); 

:하지만

는이 코드로 시도 어레이 ([0] => 186x186 [1] => 42.052661 [2] => 88.049441) 여기서 어레이 [0] 불필요한 마이너스 서명은 조정되지 않습니다. 다른 방법이 있으며 이것을 만들 수 있습니다. (내 영어 죄송합니다, 아주 잘 아니지만 열심히 배우는 중이에요)는 정규 표현식 다음, 좌표와 일치 시도 할 경우

+0

나는 또한 이것이 작동하고 다른 문자열을 추가 할 때 ... 특별히이 것을 의미하지는 않습니다. –

+0

가능한 유니버설 정규식 코드 (http://stackoverflow.com/questions/7932528/universal-regex-code)) – FailedDev

+0

아니요, 중복되지 않습니다 ... 다른 질문입니다 –

답변

1

:

(\-?[0-9]{1,3}\.[0-9]+)(?:,|\||$) 

두 첫 번째 그룹의 좌표가 될 것입니다 일치합니다.

+0

결과가 다시 동일합니다 : Array ([0] => 186x186 [1] => 42.052661 [2] => -88.049441) (배열 [0]은 unnessesary가 아닙니다. ,하지만 이번에는 두 번째 좌표 (-) 마이너스. 감사합니다 –

+0

그리고 내가 문자열을 변경하는 경우 : $ string = 'http://234234maps.google.com/maps/api/2344324staticmap?size=186x186&sensor=false&markers=color : red | 크기 : mid | 42.052661, -88.049441 ';이 코드는 모든 숫자와 일치하며 소수점 이하 자리 만 필요합니다 –

+0

소수 그룹에서 선택적 플래그를 제거하십시오 :'(\ -? [0-9] {1,3} \. [ 0-9] +) (? :, | \ || $)' –