2014-10-06 72 views
1

我有很多html文件和其中的几个链接。例如。解析文件中的数据后使用舍入函数

<div><a href="/location/?latitude=41.7948205&amp;longitude=-72.12729890000003" >location 1</a></div> 
<div><a href="/location/?latitude=41.9020418&amp;longitude=-72.07979440000002" >location 2</a></div> 

我想将经度值四舍五入到小数点后6位。例如。

<div><a href="/location/?latitude=41.7948205&amp;longitude=-72.127299" >location 1</a></div> 
<div><a href="/location/?latitude=41.9020418&amp;longitude=-72.079794" >location 2</a></div> 

我是小白,当谈到文件的解析,不知道这是可能的。我会很感激任何指针和指导。

+0

你有语言偏好吗? – 2014-10-06 18:14:15

+0

Hi @Derek - 感谢您的快速响应。我很喜欢PHP,C和C++。 – rogerb 2014-10-06 18:15:56

回答

0

下面是一些PHP代码,将做到这一点:

$str = '<div><a href="/location/?latitude=41.7948205&amp;longitude=-72.12729890000003" >location 1</a></div> 
<div><a href="/location/?latitude=41.9020418&amp;longitude=-72.07979440000002" >location 2</a></div> 
<div><a href="/location/?latitude=41.9020418&amp;longitude=-72.07979440000002" >location 3</a></div>'; 

$arr = explode("\n", $str); 

$decimalPlaces = 5; 

foreach ($arr as &$line) { 
    if (preg_match("/latitude=(.*?)&amp;longitude=(.*?)\"/", $line, $matches)) { 
     $latitudeApprox = round($matches[1], $decimalPlaces); 
     $longitudeApprox = round($matches[2], $decimalPlaces); 
     $line = preg_replace("/latitude=.*?&amp;longitude=.*?\"/", "latitude=$latitudeApprox&amp;longitude=$longitudeApprox\"", $line); 
    } 
} 

$str = implode("\n", $arr); 
echo $str; 

注意,对于拉出经度的正则表达式是不是很强劲。它假设你从来没有这样的情况,例如:

<a href="/location/?latitude=41.7948205&amp;longitude=-72.12729890000003&amp;SOMETHING+ELSE+HERE" >...</a> 
+0

你是救生员。这很好用!不,我没有任何其他经纬度查询参数的情况.. – rogerb 2014-10-06 18:42:25

+0

如果我想同时舍入经度和纬度,这很容易修改吗?说小数点后5位? – rogerb 2014-10-06 18:45:05

+0

当然,我更新了代码以拉出经度和纬度。您可以将$ decimalPlaces的值更改为您需要的任何精度。 – 2014-10-06 18:48:38