Использовать функцию округления после разбора данных из файла

У меня есть довольно много 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>

Я нуб, когда дело доходит до разбора файлов и не знаю, возможно ли это. Буду признателен за любые указания и рекомендации.

1

Решение

Вот некоторый код 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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]