Xpath正则表达式和preg-match函数


Xpath regex and preg-match function

我有这样的代码:

<div class="small_map_wrapper">
                <script type="text/javascript">loadMap('44.7958873,20.471077899999954');</script>

我将获取该内容:

$string = $xpath->query("//div[@class='small_map_wrapper']/@script")->item(0)->textContent;

然后我尝试使用preg_match:

获取这些数字'44.7958873,20.47107789999999954 '
preg_match('/.*loadMap(['d.,]+)<.*/', $string, $matches); 
list($lat, $lng) = explode(',', $matches[1]);
$data['lat'] = $lat; 
$data['lng'] = $lng;
但是我在代码里写错了。我看不出错误。有人看到错误,因为开始这个代码后$data['lat']是0,lng也是(我的英语不是很好,很抱歉)

不使用复杂的正则表达式,您可以使用一个更容易使用的函数sscanf:

$r = sscanf($str, "loadMap('%f,%f", $lat, $lng);

它允许您直接将这两个浮点值解析为给定字符串(Demo)的变量。

@script -这是错误的。您正在尝试获得一个名为script的属性,而不是标签。移除@

你的正则表达式也是错误的,因为它正在寻找像loadMap12.345,67.890<这样的东西。试试这个正则表达式:/loadMap'('([0-9.,]+)'')/

应该可以了