preg_match_all 只返回第一场比赛

preg_match_all only returning first match

我已经做了功课并在发布之前尽可能地进行了测试,以防万一。正如标题所说,我的 preg_match_all 没有找到所有匹配项,但是如果我 运行 以与 phptester.net 相同的方式工作,它就可以正常工作。我已经阅读了有关该功能的文档,以及此处所有(尽可能多的)帖子都是相同的问题,但没有任何效果。在我的实际代码中 print_r 不存在,我用它来证明 3 个元素应该存在。然而,在我的实际程序中,我只能找到第一个匹配项:“-77.519506”。

    <?php

    $coords = "<Point><coordinates>-77.519506,43.113491,0.0</coordinates></Point>";
    preg_match_all("/-?\d{1,2}\.\d{0,6}/",$coords,$latLong);

    print_r($latLong);
    print($latLong[0][0]);//prints -77.519506
    print($latLong[0][1]);//prints NULL

我建议你使用SimpleXML来提取坐标的内容

$point = new SimpleXMLElement($xmlstr);
$coords=$point->Point->coordinates;

然后你可以简单地做

$num=explode(',', $coordinates);

您需要在每一行上使用 str_getcsv 而不是展开:

list($div,$randID,$street,$city,$zipCode,$district,$coords) = str_getcsv($row);