[英]How to get 2 data points from a text document?
我將網頁的源代碼復制到文本文檔中,但無法從文件中獲取兩個數據點; 緯度和經度。
我必須制作並掃描文檔的php文件是這樣的:
<?php
$ch = curl_init("http://www.marinetraffic.com/ais/shipdetails.aspx?MMSI=258245000");
$fp = fopen("example_homepage.txt", "w");
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
fclose($fp);
header('Content-Type: text/plain');
$myFile = "example_homepage.txt";
$fh = fopen($myFile, 'r');
$theData = fread($fh, 9251);
fclose($fh);
echo $theData;
?>
gps埋在如下所示的文本中(來自文件example_homepage.txt):
<img style="border: 1px solid #aaa" src="flags/NO.gif" />
<br/>
<b>Call Sign:</b>LAJW
<br/>
<b>IMO:</b>9386380,
<b>MMSI:</b>258245000
<br/>
<hr/>
<h2>Last Position Received</h2>
<b>Area:</b>North Sea
<br/>
<b>Latitude / Longitude:</b>
<a href='default.aspx?mmsi=258245000¢erx=5.311533¢ery=60.39997&zoom=10&type_color=9'>60.39997˚ / 5.311533˚ (Map)</a>
<br/>
<b>Currently in Port:</b>
<a href='default.aspx?centerx=5.32245¢ery=60.39085&zoom=14'>BERGEN</a>
<br/>
<b>Last Known Port:</b>
</b>
<a href='default.aspx?centerx=5.32245¢ery=60.39085&zoom=14'>BERGEN</a>
<br/>
<b>Info Received:</b>0d 0h 20min ago
<br/>
<table>
<tr>
<td>
<img src="shipicons/magenta0.png" />
</td>
<td>
<a href='default.aspx?mmsi=258245000¢erx=5.311533¢ery=60.39997&zoom=10&type_color=9'><b>Current Vessel's Track</b></a>
</td>
</tr>
<tr>
<td>
<img src="windicons/w05_330.png" />
</td>
<td>
<b>Wind:</b>5 knots, 327°, 13°C</td>
</tr>
</table>
<a href='datasheet.aspx?datasource=ITINERARIES&MMSI=258245000'><b>Itineraries History</b></a>
<br/>
<hr/>
<h2>Voyage Related Info (Last Received)</h2>
<b>Draught:</b>6.8 m
<br/>
<b>Destination:</b>BERGEN HAVN
<br/>
<b>ETA:</b>2012-05-22 18:00
<br/>
<b>Info Received:</b>2012-05-23 18:43 (
我想要的兩個數字是:
緯度:60.39085經度:5.32245
我對這種事情不太了解。 也許有更好的方法。 請告訴我。
編輯:僅供參考,使用最后三行代碼,我能夠在文本文件中獲取前9251個字符。
可能矯over過正,但是您可以嘗試使用PHP DOM + parse_url + parse_str :
$text = file_get_contents('http://example.com/path/to/file.html');
$doc = new DOMDocument('1.0');
$doc->loadHTML($text);
foreach($doc->getElementsByTagName('div') AS $div) {
$class = $div->getAttribute('class');
if(strpos($class, 'news') !== FALSE) {
if($div->hasAttribute('src') OR $div->hasAttribute('href')) {
$parsed_url = parse_url($div->getAttribute('src')));
$query_values = parse_str($parsed_url);
$desired_values = array(
$query_values['centerx'],
$query__values['centery']
);
}
}
}
這是我為獲得所需結果所做的工作:(打印出* -70.19347 42.02112 * )
<?php
//goes though and copies the web page to a text file
$ch = curl_init("http://photos.marinetraffic.com/ais/lightdetails.aspx?light_id=1000019773");
$fp = fopen("example_homepage.txt", "w");
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
fclose($fp);
//prevents some parsing of the html document
header('Content-Type: text/plain');
//opens text file and reads contents to a string
$myFile = "example_homepage.txt";
$fh = fopen($myFile, 'r');
$theData = fread($fh,12000);
fclose($fh);
//finds the location of the beginning of the GPS data
$pos = strrpos($theData, "¢erx=");
if ($pos === false) {
// note: three equal signs
echo "not found";
}
//cuts out that string and finds position for x and y components
$subtract = 12000-$pos-36;
$rest = substr($theData, $pos, -$subtract);
$lat = substr($rest, 9, -17);
$lonpos = strrpos($rest, "¢ery=")+9;
$lon = substr($rest, $lonpos);
//turns the values into floats
$lat = floatval($lat);
$lon = floatval($lon);
//echo $rest;
echo $lat;
echo " ";
echo $lon;
?>
希望這可以幫助某人
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.