从PGSQL解析PHP

从PGSQL解析PHP,php,Php,我连接到postgresql数据库,它返回以下结果 O4, MULTILINESTRING((-91.4272099951079 35.6984820849707,-91.2691971234476 35.8195546559061)) I4, MULTILINESTRING((-91.4668296641028 35.5407821819705,-91.3332878428544 35.7230307833947,-91.1889662757843 35.8834271551078)) 使用

我连接到postgresql数据库,它返回以下结果

O4, MULTILINESTRING((-91.4272099951079 35.6984820849707,-91.2691971234476 35.8195546559061))
I4, MULTILINESTRING((-91.4668296641028 35.5407821819705,-91.3332878428544 35.7230307833947,-91.1889662757843 35.8834271551078))
使用此查询:

select id, astext(the_geom)from trkl
我正在尝试生成一个如下所示的文件,我必须反转跳线,35.xx应该是第一个,而-91.xx应该是最后一个。有没有简单的方法可以做到这一点

"O4"
35.62200200, -88.98259200
35.62203500, -88.98240800
35.62202700, -88.98231000
35.62180000, -88.98163400
END:
"I4"
35.62200200, -88.98259200
35.62203500, -88.98240800
35.62202700, -88.98231000
35.62180000, -88.98163400
35.62175700, -88.98149000
35.62172500, -88.97881200
35.62172000, -88.97798500
35.62169800, -88.97752400
END

我不熟悉这个PGSQL以及从数据库中获取结果时的外观,但我认为这正是您要寻找的

$mls = '-91.4272099951079 35.6984820849707,-91.2691971234476 35.8195546559061';
$pairs = explode(',', $mls);
foreach ($pairs as $pair) {
    $coords = explode(' ', $pair);
    printf('%s, %s', $coords[1], $coords[0]);
}
将输出

35.6984820849707, -91.4272099951079
35.8195546559061, -91.2691971234476

假设始终使用字符串中包含的多重字符串获取坐标:

$output = array();
foreach ($results as $row)
{
    $row = explode(', ', $row, 2);
    $output[] = '"'.$row[0].'"';
    $row = explode(',', substr(rtrim($row[1], ')'), 17);
    for ($i = 0, $c = count($row); $i < $c; $i++)
    {
        $row[$i] = explode(' ', $row[$i], 2);
        $output[] = $row[$i][1].', '.$row[$i][0];
    }
}
$output = implode("\n", $output);
$output=array();
foreach($结果为$行)
{
$row=分解(“,”,$row,2);
$output[]=“.”.$row[0].“”;
$row=explode(','),substr(rtrim($row[1],')),17);
对于($i=0,$c=count($row);$i<$c;$i++)
{
$row[$i]=爆炸(“”,$row[$i],2);
$output[]=$row[$i][1]。,'.$row[$i][0];
}
}
$output=内爆(“\n”,$output);
有更好的解决方案,但这是最明显的解决方案,应该可以解决问题