preg_match_all只返回第一个匹配

时间:2015-06-02 18:29:51

标签: php preg-match-all

我完成了我的作业并在发布之前尽可能地进行了测试,这是众所周知的。正如标题所说我的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

2 个答案:

答案 0 :(得分:1)

您需要在每一行使用str_getcsv而不是爆炸:

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

答案 1 :(得分:0)

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

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

然后你可以简单地做

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