2011-10-28 17 views
-1

私はウェブプログラミング、特に正規表現で初めてです。文字列から10進数を抽出するユニバーサルコードを作成したいのですが、10進数と座標を取得するときに常に10進数でなければならない座標に気づくためです。私たちが本当に問題になっているのは、いくつかの座標が( - )から10進数の前にあることです。この問題を解決する方法。正規表現の文字列からの十進数

私はこのコードを試みた:ここで、配列[0]不要マイナスアレイ([0] => 186x186 [1] => 42.052661 [2] => 88.049441):

$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

私はまた、この作品が好きで、別の文字列を追加すると...特にこれを意味しません。 –

+0

[universal regex code]の可能な複製(http://stackoverflow.com/questions/7932528/universal-regex-code ) – FailedDev

+0

いいえ、重複しない...これは別の質問です –

答えて

1

あなただけの座標を一致させたい場合は、以下の正規表現してみてください:

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

を二つの最初のグループの試合は座標になります。

+0

結果は再び同じです:配列([0] => 186x186 [1] => 42.052661 [2] => -88.049441)(配列[0]はunnessesaryではありませんしかし、今回は2番目の座標は( - )マイナスです。ありがとう –

+0

と私は文字列を変更する場合:$ string = 'http://234234maps.google.com/maps/api/2344324staticmap?size=186x186&sensor=false&markers=color:red | size:mid | 42.052661、-88.049441 ';このコードはすべての数字にマッチしますが、10進数のみを一致させる必要があります –

+0

次に、小数点グループからオプションフラグを削除します: '(\ - ?[0-9] {1,3} 0-9] +)(?:、| \ || $) ' –