У меня есть довольно много HTML-файлов с несколькими ссылками в нем. Например.
<div><a href="/location/?latitude=41.7948205&longitude=-72.12729890000003" >location 1</a></div>
<div><a href="/location/?latitude=41.9020418&longitude=-72.07979440000002" >location 2</a></div>
Я хочу округлить значения долготы до 6 знаков после запятой. Например.
<div><a href="/location/?latitude=41.7948205&longitude=-72.127299" >location 1</a></div>
<div><a href="/location/?latitude=41.9020418&longitude=-72.079794" >location 2</a></div>
Я нуб, когда дело доходит до разбора файлов и не знаю, возможно ли это. Буду признателен за любые указания и рекомендации.
Вот некоторый код PHP, который сделает это:
$str = '<div><a href="/location/?latitude=41.7948205&longitude=-72.12729890000003" >location 1</a></div>
<div><a href="/location/?latitude=41.9020418&longitude=-72.07979440000002" >location 2</a></div>
<div><a href="/location/?latitude=41.9020418&longitude=-72.07979440000002" >location 3</a></div>';
$arr = explode("\n", $str);
$decimalPlaces = 5;
foreach ($arr as &$line) {
if (preg_match("/latitude=(.*?)&longitude=(.*?)\"/", $line, $matches)) {
$latitudeApprox = round($matches[1], $decimalPlaces);
$longitudeApprox = round($matches[2], $decimalPlaces);
$line = preg_replace("/latitude=.*?&longitude=.*?\"/", "latitude=$latitudeApprox&longitude=$longitudeApprox\"", $line);
}
}
$str = implode("\n", $arr);
echo $str;
Обратите внимание, что регулярное выражение для вытягивания долготы не очень надежно. Предполагается, что у вас никогда не бывает таких случаев, например:
<a href="/location/?latitude=41.7948205&longitude=-72.12729890000003&SOMETHING+ELSE+HERE" >...</a>
Других решений пока нет …