$re = '/^(([\+\-NnSs])?([0-8]?\d|90)[°˚º^~*\s\-_]+([0-5]?\d|\d)[\'′\s\-_]+([0-5]?\d|\d)([.]\d*)?["¨˝\s\-_]*([\+\-NnSs])?)([\s\-_:|,;\/\\\\]+)(([\+\-EeWw])?([0]?\d?\d|1[0-7]\d|180)[°˚º^~*\s\-_]+([0-5]\d|\d)[\'′\s\-_]+([0-5]?\d|\d)([.]\d*)?["¨˝\s_]*([\+\-EeWw])?)[\s]*$/m';
$str = '+0 0 0 0 0 0
0 0 0+ 0 0 0
0 0 0 +0 0 0
0 0 0 0 0 0+
-0 0 0 0 0 0
0 0 0- 0 0 0
0 0 0 -0 0 0
0 0 0 0 0 0-
+0 0 0 +0 0 0
0 0 0+ 0 0 0+
0 0 0+ 0 0 0
0 0 0 0 0 0+
// check divider
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0|0 0 0
0 0 0:0 0 0
0 0 0,0 0 0
0 0 0;0 0 0
0 0 0 | 0 0 0
0 0 0 , 0 0 0
0 0 0 - 0 0 0
0 0 0 : 0 0 0
0 0 0 ; 0 0 0
0 0 0 ;; 0 0 0
0 0 0 || 0 0 0
0 0 0 \\ 0 0 0
0 0 0 / 0 0 0
0 0 0N 0 0 0
0 0 0n 0 0 0
0 0 0S 0 0 0
0 0 0s 0 0 0
0 0 0N 0 0 0W
0 0 0n 0 0 0w
0 0 0S 0 0 0e
0 0 0s 0 0 0E
0 0 0 0 0 0W
0 0 0 0 0 0w
0 0 0 0 0 0e
0 0 0 0 0 0E
//check + and - signs
+0 0 0 0 0 0
0 0 0+ 0 0 0
0 0 0 +0 0 0
0 0 0 0 0 0+
-0 0 0 0 0 0
0 0 0- 0 0 0
0 0 0 -0 0 0
0 0 0 0 0 0-
+0 0 0 +0 0 0
0 0 0+ 0 0 0+
0 0 0+ 0 0 0
0 0 0 0 0 0+
// check all zeros
00 00 00 N 000 00 00 E
00 00 00 N 000 00 0 E
00 00 00 N 000 0 00 E
00 00 00 N 000 0 0 E
00 00 00 N 00 00 00 E
00 00 00 N 00 00 0 E
00 00 00 N 00 0 0 E
00 00 00 N 0 00 00 E
00 00 00 N 0 0 00 E
00 00 00 N 0 0 0 E
00 00 0 N 000 00 00 E
00 00 0 N 000 00 0 E
00 00 0 N 000 0 00 E
00 00 0 N 000 0 0 E
00 00 0 N 00 00 00 E
00 00 0 N 00 00 0 E
00 00 0 N 00 0 0 E
00 00 0 N 0 00 00 E
00 00 0 N 0 0 00 E
00 00 0 N 0 0 0 E
00 0 00 N 000 00 00 E
00 0 00 N 000 00 0 E
00 0 00 N 000 0 00 E
00 0 00 N 000 0 0 E
00 0 00 N 00 00 00 E
00 0 00 N 00 00 0 E
00 0 00 N 00 0 0 E
00 0 00 N 0 00 00 E
00 0 00 N 0 0 00 E
00 0 00 N 0 0 0 E
0 00 00 N 000 00 00 E
0 00 00 N 000 00 0 E
0 00 00 N 000 0 00 E
0 00 00 N 000 0 0 E
0 00 00 N 00 00 00 E
0 00 00 N 00 00 0 E
0 00 00 N 00 0 0 E
0 00 00 N 0 00 00 E
0 00 00 N 0 0 00 E
0 00 00 N 0 0 0 E
0 00 0 N 000 00 00 E
0 00 0 N 000 00 0 E
0 00 0 N 000 0 00 E
0 00 0 N 000 0 0 E
0 00 0 N 00 00 00 E
0 00 0 N 00 00 0 E
0 00 0 N 00 0 0 E
0 00 0 N 0 00 00 E
0 00 0 N 0 0 00 E
0 00 0 N 0 0 0 E
0 0 00 N 000 00 00 E
0 0 00 N 000 00 0 E
0 0 00 N 000 0 00 E
0 0 00 N 000 0 0 E
0 0 00 N 00 00 00 E
0 0 00 N 00 00 0 E
0 0 00 N 00 0 0 E
0 0 00 N 0 00 00 E
0 0 00 N 0 0 00 E
0 0 00 N 0 0 0 E
//invalid
0 0 0 N 000 00 E
0 0 0 N 000 E
0 0 N 0 0 00 E
0 N 0 0 0E
// check valid latitude deg vaules
01 00 00 N 000 0 0 E
1 00 00 N 000 0 0 E
09 00 00 N 000 0 0 E
9 00 00 N 000 0 0 E
89 00 00 N 000 0 0 E
90 00 01 N 000 0 0 E
+00 00 00 N 000 0 0 E
+0 00 00 N 000 0 0 E
+01 00 00 N 000 0 0 E
+1 00 00 N 000 0 0 E
+09 00 00 N 000 0 0 E
+9 00 00 N 000 0 0 E
+89 00 00 N 000 0 0 E
+90 00 01 N 000 0 0 E
-00 00 00 N 000 0 0 E
-0 00 00 N 000 0 0 E
-01 00 00 N 000 0 0 E
-1 00 00 N 000 0 0 E
-09 00 00 N 000 0 0 E
-9 00 00 N 000 0 0 E
-89 00 00 N 000 0 0 E
-90 00 01 N 000 0 0 E
00 00 00 000 0 0
+0 00 00 000 0 0
+01 00 00 000 0 0
+1 00 00 000 0 0
+09 00 00 000 0 0
+9 00 00 000 0 0
+89 00 00 000 0 0
+90 00 01 000 0 0
//invalid
91 00 01 N 000 0 0 E
000 00 01 N 000 0 0 E
089 00 01 N 000 0 0 E
// check valid latitude minute vaules
00 01 00 N 000 0 0 E
00 1 00 N 000 0 0 E
00 09 00 N 000 0 0 E
00 9 00 N 000 0 0 E
00 59 00 N 000 0 0 E
//invalid
00 60 00 N 000 0 0 E
00 59.55 00 N 000 0 0 E
// check valid latitude second vaules
00 00 01 N 000 0 0 E
00 00 1 N 000 0 0 E
00 00 09 N 000 0 0 E
00 00 9 N 000 0 0 E
00 00 59 N 000 0 0 E
00 00 01.001 N 000 0 0 E
00 00 1.001 N 000 0 0 E
00 00 09.001 N 000 0 0 E
00 00 9.001 N 000 0 0 E
00 00 59.001 N 000 0 0 E
//invalid
00 00 60 N 000 0 0 E
00 00 60.999 N 000 0 0 E
//check valid longitute degree values
00 00 0 N 001 0 0 E
00 00 0 N 01 0 0 E
00 00 0 N 1 0 0 E
00 00 0 N 10 0 0 E
00 00 0 N 99 0 0 E
00 00 0 N 100 0 0 E
00 00 0 N 179 0 0 E
00 00 0 N 79 0 0 E
00 00 0 N 180 0 0 E
00 00 0 N 001° 0 0 E
00 00 0 N 01° 0 0 E
00 00 0 N 1° 0 0 E
00 00 0 N 10° 0 0 E
00 00 0 N 99° 0 0 E
00 00 0 N 100° 0 0 E
00 00 0 N 179° 0 0 E
00 00 0 N 79° 0 0 E
00 00 0 N 180° 0 0 E
00 00 0 N 001˚ 0 0 E
00 00 0 N 01˚ 0 0 E
00 00 0 N 1˚ 0 0 E
00 00 0 N 10˚ 0 0 E
00 00 0 N 99˚ 0 0 E
00 00 0 N 100˚ 0 0 E
00 00 0 N 179˚ 0 0 E
00 00 0 N 79˚ 0 0 E
00 00 0 N 180˚ 0 0 E
00 00 0 N 001º 0 0 E
00 00 0 N 01º 0 0 E
00 00 0 N 1º 0 0 E
00 00 0 N 10º 0 0 E
00 00 0 N 99º 0 0 E
00 00 0 N 100º 0 0 E
00 00 0 N 179º 0 0 E
00 00 0 N 79º 0 0 E
00 00 0 N 180º 0 0 E
00 00 0 N 001^ 0 0 E
00 00 0 N 01^ 0 0 E
00 00 0 N 1^ 0 0 E
00 00 0 N 10^ 0 0 E
00 00 0 N 99^ 0 0 E
00 00 0 N 100^ 0 0 E
00 00 0 N 179^ 0 0 E
00 00 0 N 79^ 0 0 E
00 00 0 N 180^ 0 0 E
00 00 0 N 001~ 0 0 E
00 00 0 N 01~ 0 0 E
00 00 0 N 1~ 0 0 E
00 00 0 N 10~ 0 0 E
00 00 0 N 99~ 0 0 E
00 00 0 N 100~ 0 0 E
00 00 0 N 179~ 0 0 E
00 00 0 N 79~ 0 0 E
00 00 0 N 180~ 0 0 E
00 00 0 N 001* 0 0 E
00 00 0 N 01* 0 0 E
00 00 0 N 1* 0 0 E
00 00 0 N 10* 0 0 E
00 00 0 N 99* 0 0 E
00 00 0 N 100* 0 0 E
00 00 0 N 179* 0 0 E
00 00 0 N 79* 0 0 E
00 00 0 N 180* 0 0 E
//invalid
00 00 0 N 181 0 0 E
00 00 0 N 1111 0 0 E
00 00 0 N 181° 0 0 E
00 00 0 N 1111° 0 0 E
00 00 0 N 181˚ 0 0 E
00 00 0 N 1111˚ 0 0 E
00 00 0 N 181º 0 0 E
00 00 0 N 1111º 0 0 E
00 00 0 N 181^ 0 0 E
00 00 0 N 1111^ 0 0 E
00 00 0 N 181~ 0 0 E
00 00 0 N 1111~ 0 0 E
00 00 0 N 181* 0 0 E
00 00 0 N 1111* 0 0 E
//check valid longitute minute values
00 00 0 N 000 01 0 E
00 00 0 N 000 1 0 E
00 00 0 N 000 9 0 E
00 00 0 N 000 09 0 E
00 00 0 N 000 10 0 E
00 00 0 N 000 59 0 E
00 00 0 N 000 5 0 E
00 00 0 N 000 01\' 0 E
00 00 0 N 000 1\' 0 E
00 00 0 N 000 9\' 0 E
00 00 0 N 000 09\' 0 E
00 00 0 N 000 10\' 0 E
00 00 0 N 000 59\' 0 E
00 00 0 N 000 5\' 0 E
00 00 0 N 000 01′ 0 E
00 00 0 N 000 1′ 0 E
00 00 0 N 000 9′ 0 E
00 00 0 N 000 09′ 0 E
00 00 0 N 000 10′ 0 E
00 00 0 N 000 59′ 0 E
00 00 0 N 000 5′ 0 E
//invalid
00 00 0 N 000 60 0 E
00 00 0 N 000 61 0 E
00 00 0 N 000 60\' 0 E
00 00 0 N 000 61\' 0 E
00 00 0 N 000 60′ 0 E
00 00 0 N 000 61′ 0 E
// check degree symbols
0° 0\' 0" 0° 0\' 0"
0° 0\' 0" 0˚ 0\' 0"
0° 0\' 0" 0º 0\' 0"
0° 0\' 0" 0^ 0\' 0"
0° 0\' 0" 0~ 0\' 0"
0° 0\' 0" 0* 0\' 0"
0˚ 0\' 0" 0° 0\' 0"
0˚ 0\' 0" 0˚ 0\' 0"
0˚ 0\' 0" 0º 0\' 0"
0˚ 0\' 0" 0^ 0\' 0"
0˚ 0\' 0" 0~ 0\' 0"
0˚ 0\' 0" 0* 0\' 0"
0º 0\' 0" 0° 0\' 0"
0º 0\' 0" 0˚ 0\' 0"
0º 0\' 0" 0º 0\' 0"
0º 0\' 0" 0^ 0\' 0"
0º 0\' 0" 0~ 0\' 0"
0º 0\' 0" 0* 0\' 0"
0^ 0\' 0" 0° 0\' 0"
0^ 0\' 0" 0˚ 0\' 0"
0^ 0\' 0" 0º 0\' 0"
0^ 0\' 0" 0^ 0\' 0"
0^ 0\' 0" 0~ 0\' 0"
0^ 0\' 0" 0* 0\' 0"
0~ 0\' 0" 0° 0\' 0"
0~ 0\' 0" 0˚ 0\' 0"
0~ 0\' 0" 0º 0\' 0"
0~ 0\' 0" 0^ 0\' 0"
0~ 0\' 0" 0~ 0\' 0"
0~ 0\' 0" 0* 0\' 0"
0* 0\' 0" 0° 0\' 0"
0* 0\' 0" 0˚ 0\' 0"
0* 0\' 0" 0º 0\' 0"
0* 0\' 0" 0^ 0\' 0"
0* 0\' 0" 0~ 0\' 0"
0* 0\' 0" 0* 0\' 0"
//check minute symbols
0° 00\' 00 000° 00\' 00"
0° 00\' 00 000° 00\' 00"
0° 00\' 00" 000° 00\' 00
0° 00\' 00" 000° 00\' 00"
0° 00′ 00 000° 00′ 00"
0° 00′ 00 000° 00′ 00"
0° 00′ 00" 000° 00′ 00
0° 00′ 00" 000° 00′ 00"
0° 00\' 00 000° 00′ 00"
0° 00\' 00 000° 00′ 00"
0° 00\' 00" 000° 00′ 00
0° 00\' 00" 000° 00′ 00"
0° 00′ 00 000° 00\' 00"
0° 00′ 00 000° 00\' 00"
0° 00′ 00" 000° 00\' 00
0° 00′ 00" 000° 00\' 00"
//check second symbols
0° 00\' 00" N 000° 00\' 00"
0° 00\' 00.666" N 000° 00\' 00" E
0° 00\' 00" N 000° 00\' 00.000" E
0° 00\' 00" N 000° 00\' 00"
0° 00\' 00¨ N 000° 00\' 00¨ E
0° 00\' 00.666¨ N 000° 00\' 00¨
0° 00\' 00¨ N 000° 00\' 00.000¨ E
0° 00\' 00¨ N 000° 00\' 00¨ E
0° 00\' 00˝ N 000° 00\' 00˝ E
0° 00\' 00.666˝ N 000° 00\' 00˝
0° 00\' 00˝ N 000° 00\' 00.000˝ E
0° 00\' 00˝ N 000° 00\' 00˝ E
//check full dms with differing spaces
0°00\'00˝N 000°00\'00˝E
0 °00\'00˝N 000°00\'00˝E
0 ° 00 \'00˝N 000°00\'00˝E
0 ° 00 \'00 ˝N 000°00\'00˝E
0 ° 00 \'00˝ N 000°00\'00˝E
0 ° 00 \'00˝ N 000 ° 00\'00˝E
0 ° 00 \'00˝ N 000 ° 00 \'00˝E
0 ° 00 \'00˝ N 000 ° 00 \' 00˝E
0 ° 00 \'00˝ N 000 ° 00 \' 00 ˝E
0 ° 00 \'00˝ N 000 ° 00 \' 00 ˝ E
//check full dms prefix / suffix
0° 00\' 00˝N 000° 00\'00˝E
0° 00\' 00˝N 000° 00\'00˝
0° 00\' 00˝ 000° 00\'00˝E
N0° 00\' 00˝ E000° 00\'00˝
N0° 00\' 00˝ 000° 00\'00˝E
0° 00\' 00˝ E000° 00\'00˝
N0° 00\' 00˝N 000° 00\'00˝
0° 00\' 00˝ E000° 00\'00˝E
0° 00\' 00˝S 000° 00\'00˝E
0° 00\' 00˝S 000° 00\'00˝
0° 00\' 00˝ 000° 00\'00˝E
S0° 00\' 00˝ E000° 00\'00˝
S0° 00\' 00˝ 000° 00\'00˝E
0° 00\' 00˝ E000° 00\'00˝
S0° 00\' 00˝S 000° 00\'00˝
0° 00\' 00˝ E000° 00\'00˝E
0° 00\' 00˝N 000° 00\'00˝W
0° 00\' 00˝N 000° 00\'00˝
0° 00\' 00˝ 000° 00\'00˝W
N0° 00\' 00˝ W000° 00\'00˝
N0° 00\' 00˝ 000° 00\'00˝W
0° 00\' 00˝ W000° 00\'00˝
N0° 00\' 00˝N 000° 00\'00˝
0° 00\' 00˝ W000° 00\'00˝W
0° 00\' 00˝S 000° 00\'00˝W
0° 00\' 00˝S 000° 00\'00˝
0° 00\' 00˝ 000° 00\'00˝W
S0° 00\' 00˝ W000° 00\'00˝
S0° 00\' 00˝ 000° 00\'00˝W
0° 00\' 00˝ W000° 00\'00˝
S0° 00\' 00˝S 000° 00\'00˝
0° 00\' 00˝ E000° 00\'00˝W
//invalid
0° 00\' 00˝E 000° 00\'00˝E
0° 00\' 00˝E 000° 00\'00˝W
0° 00\' 00˝W 000° 00\'00˝W
0° 00\' 00˝N 000° 00\'00˝S
0° 00\' 00˝N 000° 00\'00˝N
0° 00\' 00˝S 000° 00\'00˝S
0° 00\' 00˝W 000° 00\'00˝S
0° 00\' 00˝W 000° 00\'00˝N
0° 00\' 00˝E 000° 00\'00˝S
0° 00\' 00˝E 000° 00\'00˝N
';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
// Print the entire match result
var_dump($matches);
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for PHP, please visit: http://php.net/manual/en/ref.pcre.php