我写正则表达式的能力很差.
我试图在括号“()”之间获取值.像下面的东西……
$a = "POLYGON((1 1,2 2,3 3,1 1))";
preg_match_all("/\((.*)\)/U", $a, $pat_array);
print_r($pat_array);
但这会给我一些像…的元素
Array
(
[0] => Array
(
[0] => ((1 1,2 2,3 3,1 1)
)
[1] => Array
(
[0] => (1 1,2 2,3 3,1 1
)
)
但我想取“1 1,2 2,3 3,1 1”作为输出.
我知道我们可以在获得此输出后修剪括号.但如果使用正则表达式完成,这将是很好的.
提前致谢.
解决方案:根据@anubhava的回答:
使用@ anubhava的正则表达式.
例:
$a = "POLYGON((1 1,2 2,3 3,1 1),(1 1,2 2,3 3,1 1),(1 1,2 2,3 3,1 1))";
如果这个正则表达式的打印结果你会得到这样的……
Array
(
[0] => Array
(
[0] => ((1 1,2 2,3 3,1 1)
[1] => (1 1,2 2,3 3,1 1)
[2] => (1 1,2 2,3 3,1 1))
)
[1] => Array
(
[0] => 1 1,2 2,3 3,1 1
[1] => 1 1,2 2,3 3,1 1
[2] => 1 1,2 2,3 3,1 1
)
)
看看第二个数组元素,它就像我们想要的那样.
仅供参考:我用它来从MySQL数据库中获取POLYGON的几何数据然后我用数组处理它以获得所有多边形节点的所有纬度和经度.