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);
我已经做了功课并在发布之前尽可能地进行了测试,以防万一。正如标题所说,我的 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);