Page 1 of 1

Some help needed

Posted: Sat Jul 10, 2004 9:44 pm
by Simon Angell
Hi all.
Im looking to get a script going to parse data from a website. the data im grabbing looks like this

Code: Select all

<!-- DATA, 20040711:113000, Canberra Airport, 10.4, 7.5, 83.0, SSW, 7, 9, -9999.0, 0, 6.6, 20040711:074800, 10.5, 20040711:111000, SSW, 5, 20040711:103900 -->
<tr>
   <td nowrap align="left">Canberra Airport </td>
   <td nowrap align="center">11 11:30</td>
   <td align="center">10.4</td>
   <td align="center">7.5</td>
   <td align="center">83</td>
   <td align="center">SSW</td>
   <td align="center">7</td>
   <td align="center">4</td>
   <td align="center">9</td>
   <td align="center">5</td>
   <td align="center">-</td>
   <td align="center">0.0</td>
   <td align="center">10.5<br>11:10</td>
   <td align="center">6.6<br>07:48</td>
   <td align="center">SSW</td>
   <td align="center">9<br>10:39</td>
   <td align="center">5<br>10:39</td>
</tr>
Now i want to get a script to start reading the data either from the <!---data or more appropriatly the <td nowrap align="left">Canberra Airport </td>
I would like it to display in this sort of fashion.

Updated 11th at 12:30 PM
Temperature 11.0 °C
Heat Index - °C
Dewpoint 7.0 °C
Humidity 76 %
Wind Direction WSW
Wind Speed 9 Km/H
Wind Chill 10.0 °C
Wind Gusts 13 Km/H
Barometer - Hpa
Rain since 9am 0.0 mm
i am after some help in the direction i should take in doing this?

thx in advanced
SiM

Posted: Sat Jul 10, 2004 11:56 pm
by feyd
I think a [php_man]preg_match[/php_man] could find and extract the information. redmonkey can probably make a regex a LOT better than I can for this.. ;)

Posted: Sat Jul 10, 2004 11:57 pm
by Simon Angell
foregot to add the code i have been messing around with...

its a combination of a couple different scripts that work on there own but not real good together ....

Code: Select all

<?php
error_reporting(1);

//source file
$read = file_get_contents("http://www.bom.gov.au/products/IDN65066.shtml");


//update time
$upgrab_start = "<td nowrap align="left">Canberra Airport </td>";
$upgrab_end = "<td nowrap align="left">Canterbury </td>"; 
$upgrab = eregi("$upgrab_start(.*)$upgrab_end", $read, $update);


$update[1] = str_replace("<tr>", "", $update[1]);
$update[1] = str_replace("<td align="center">", "", $update[1]);
$update[1] = str_replace("</tr>", "", $update[1]);
$update[1] = str_replace("</td>", ",", $update[1]);

trim($update[1]);

$lines = $update[1];
$num_lines = count ($lines);

for ($i=0; $i<=$num_lines; $i++) {
$pieces = explode(",", $lines[$i]); // split each line at each comma
$one[$i]= $peices[1];
$two[$i] = $peices[2];
$three[$i] = $peices[3];
}

echo $update[1];
echo $one;
echo $two;
echo $three; 
?>

Also, i would like to archive the previous data in a for say like the last 7 days, the data is updated every 10 minutes, so any help on that would also be good.


feyd | Please use

Code: Select all

tags when posting code. Read:  [url=http://forums.devnetwork.net/viewtopic.php?t=21171]Posting Code in the Forums[/url][/color][color=olive] <---Soz man!  SiM [/color]

Posted: Sun Jul 11, 2004 12:27 am
by feyd
here's a stab at stripping out the data

Code: Select all

<?php

$data = file_get_contents("http://www.bom.gov.au/products/IDN65066.shtml");

preg_match_all('#<!--\s+DATA,.*?-->\s*<\s*tr[^>]*?>(\s*<\s*td[^>]*?>\s*(.*?)<\s*/\s*td[^>]*?>)+\s*<\s*/\s*tr[^>]*?>#is',$data,$matches);

$data = $matches[0];

$matches = array();
foreach($data as $match)
{
	preg_match_all('#(<\s*td[^>]*?>\s*(.*?)\s*<\s*/\s*td[^>]*?>)#is',$match,$newmatches);
	$matches[] = $newmatches[2];
}

var_export($matches);

?>
outputs:

Code: Select all

array (
  0 =&gt; 
  array (
    0 =&gt; 'Badgerys Creek',
    1 =&gt; '11 15:10',
    2 =&gt; '14.1',
    3 =&gt; '14.1',
    4 =&gt; '100',
    5 =&gt; 'N',
    6 =&gt; '13',
    7 =&gt; '7',
    8 =&gt; '13',
    9 =&gt; '7',
    10 =&gt; '1019.4',
    11 =&gt; '1.4',
    12 =&gt; '14.6&lt;br&gt;14:41',
    13 =&gt; '12.0&lt;br&gt;03:37',
    14 =&gt; 'N',
    15 =&gt; '24&lt;br&gt;12:10',
    16 =&gt; '13&lt;br&gt;12:10',
  ),
  1 =&gt; 
  array (
    0 =&gt; 'Bankstown Airport',
    1 =&gt; '11 15:10',
    2 =&gt; '15.7',
    3 =&gt; '14.1',
    4 =&gt; '91',
    5 =&gt; 'WNW',
    6 =&gt; '7',
    7 =&gt; '4',
    8 =&gt; '9',
    9 =&gt; '5',
    10 =&gt; '1019.5',
    11 =&gt; '1.0',
    12 =&gt; '15.7&lt;br&gt;15:08',
    13 =&gt; '11.3&lt;br&gt;07:01',
    14 =&gt; 'NW',
    15 =&gt; '18&lt;br&gt;10:54',
    16 =&gt; '10&lt;br&gt;10:54',
  ),
  2 =&gt; 
  array (
    0 =&gt; 'Bellambi Point',
    1 =&gt; '11 15:10',
    2 =&gt; '18.0',
    3 =&gt; '12.7',
    4 =&gt; '72',
    5 =&gt; 'NNE',
    6 =&gt; '9',
    7 =&gt; '5',
    8 =&gt; '15',
    9 =&gt; '8',
    10 =&gt; '-',
    11 =&gt; '0.0',
    12 =&gt; '18.3&lt;br&gt;15:01',
    13 =&gt; '14.2&lt;br&gt;07:42',
    14 =&gt; 'N',
    15 =&gt; '18&lt;br&gt;10:04',
    16 =&gt; '10&lt;br&gt;10:04',
  ),
  3 =&gt; 
  array (
    0 =&gt; 'Camden Airport &lt;sup&gt;&amp;times;&lt;/sup&gt;',
    1 =&gt; '11 15:00',
    2 =&gt; '15.0',
    3 =&gt; '11.6',
    4 =&gt; '80',
    5 =&gt; 'N',
    6 =&gt; '11',
    7 =&gt; '6',
    8 =&gt; '17',
    9 =&gt; '9',
    10 =&gt; '1019.3',
    11 =&gt; '0.0',
    12 =&gt; '-&lt;br&gt;&amp;nbsp',
    13 =&gt; '-&lt;br&gt;&amp;nbsp',
    14 =&gt; '-&lt;br&gt;&amp;nbsp',
    15 =&gt; '-&lt;br&gt;&amp;nbsp',
    16 =&gt; '-&lt;br&gt;&amp;nbsp',
  ),
  4 =&gt; 
  array (
    0 =&gt; 'Canberra Airport',
    1 =&gt; '11 15:10',
    2 =&gt; '12.4',
    3 =&gt; '4.9',
    4 =&gt; '61',
    5 =&gt; 'WNW',
    6 =&gt; '11',
    7 =&gt; '6',
    8 =&gt; '17',
    9 =&gt; '9',
    10 =&gt; '-',
    11 =&gt; '0.0',
    12 =&gt; '13.7&lt;br&gt;14:14',
    13 =&gt; '6.6&lt;br&gt;07:48',
    14 =&gt; 'NNW',
    15 =&gt; '20&lt;br&gt;14:20',
    16 =&gt; '11&lt;br&gt;14:20',
  ),
  5 =&gt; 
  array (
    0 =&gt; 'Canterbury',
    1 =&gt; '11 15:10',
    2 =&gt; '15.6',
    3 =&gt; '13.5',
    4 =&gt; '88',
    5 =&gt; 'NNW',
    6 =&gt; '9',
    7 =&gt; '5',
    8 =&gt; '13',
    9 =&gt; '7',
    10 =&gt; '-',
    11 =&gt; '1.8',
    12 =&gt; '16.8&lt;br&gt;10:21',
    13 =&gt; '12.0&lt;br&gt;07:00',
    14 =&gt; 'NNW',
    15 =&gt; '22&lt;br&gt;10:40',
    16 =&gt; '12&lt;br&gt;10:40',
  ),
  6 =&gt; 
  array (
    0 =&gt; 'Fort Denison',
    1 =&gt; '11 15:10',
    2 =&gt; '-',
    3 =&gt; '-',
    4 =&gt; '-',
    5 =&gt; 'NNW',
    6 =&gt; '13',
    7 =&gt; '7',
    8 =&gt; '18',
    9 =&gt; '10',
    10 =&gt; '-',
    11 =&gt; '-',
    12 =&gt; '-&lt;br&gt;&amp;nbsp',
    13 =&gt; '-&lt;br&gt;&amp;nbsp',
    14 =&gt; 'WNW',
    15 =&gt; '26&lt;br&gt;11:20',
    16 =&gt; '14&lt;br&gt;11:20',
  ),
  7 =&gt; 
  array (
    0 =&gt; 'Gosford &lt;sup&gt;&amp;times;&lt;/sup&gt;',
    1 =&gt; '11 15:00',
    2 =&gt; '14.3',
    3 =&gt; '13.9',
    4 =&gt; '97',
    5 =&gt; 'N',
    6 =&gt; '9',
    7 =&gt; '5',
    8 =&gt; '15',
    9 =&gt; '8',
    10 =&gt; '-',
    11 =&gt; '3.2',
    12 =&gt; '-&lt;br&gt;&amp;nbsp',
    13 =&gt; '-&lt;br&gt;&amp;nbsp',
    14 =&gt; '-&lt;br&gt;&amp;nbsp',
    15 =&gt; '-&lt;br&gt;&amp;nbsp',
    16 =&gt; '-&lt;br&gt;&amp;nbsp',
  ),
  8 =&gt; 
  array (
    0 =&gt; 'Holsworthy',
    1 =&gt; '11 15:09',
    2 =&gt; '15.4',
    3 =&gt; '12.3',
    4 =&gt; '82',
    5 =&gt; 'NNW',
    6 =&gt; '9',
    7 =&gt; '5',
    8 =&gt; '13',
    9 =&gt; '7',
    10 =&gt; '-',
    11 =&gt; '0.8',
    12 =&gt; '16.2&lt;br&gt;15:03',
    13 =&gt; '11.4&lt;br&gt;07:06',
    14 =&gt; 'NNW',
    15 =&gt; '17&lt;br&gt;10:49',
    16 =&gt; '9&lt;br&gt;10:49',
  ),
  9 =&gt; 
  array (
    0 =&gt; 'Horsley Park',
    1 =&gt; '11 15:10',
    2 =&gt; '14.4',
    3 =&gt; '14.1',
    4 =&gt; '98',
    5 =&gt; 'N',
    6 =&gt; '13',
    7 =&gt; '7',
    8 =&gt; '17',
    9 =&gt; '9',
    10 =&gt; '-',
    11 =&gt; '1.8',
    12 =&gt; '14.8&lt;br&gt;14:59',
    13 =&gt; '11.1&lt;br&gt;06:56',
    14 =&gt; 'N',
    15 =&gt; '22&lt;br&gt;12:30',
    16 =&gt; '12&lt;br&gt;12:30',
  ),
  10 =&gt; 
  array (
    0 =&gt; 'Kurnell',
    1 =&gt; '11 15:10',
    2 =&gt; '-',
    3 =&gt; '-',
    4 =&gt; '-',
    5 =&gt; 'NW',
    6 =&gt; '13',
    7 =&gt; '7',
    8 =&gt; '15',
    9 =&gt; '8',
    10 =&gt; '-',
    11 =&gt; '-',
    12 =&gt; '-&lt;br&gt;&amp;nbsp',
    13 =&gt; '-&lt;br&gt;&amp;nbsp',
    14 =&gt; 'NW',
    15 =&gt; '31&lt;br&gt;11:38',
    16 =&gt; '17&lt;br&gt;11:38',
  ),
  11 =&gt; 
  array (
    0 =&gt; 'Little Bay',
    1 =&gt; '11 15:10',
    2 =&gt; '-',
    3 =&gt; '-',
    4 =&gt; '-',
    5 =&gt; 'N',
    6 =&gt; '7',
    7 =&gt; '4',
    8 =&gt; '11',
    9 =&gt; '6',
    10 =&gt; '-',
    11 =&gt; '-',
    12 =&gt; '-&lt;br&gt;&amp;nbsp',
    13 =&gt; '-&lt;br&gt;&amp;nbsp',
    14 =&gt; 'NW',
    15 =&gt; '26&lt;br&gt;11:34',
    16 =&gt; '14&lt;br&gt;11:34',
  ),
  12 =&gt; 
  array (
    0 =&gt; 'Lord Howe Is',
    1 =&gt; '11 15:10',
    2 =&gt; '17.7',
    3 =&gt; '9.8',
    4 =&gt; '59',
    5 =&gt; 'E',
    6 =&gt; '17',
    7 =&gt; '9',
    8 =&gt; '22',
    9 =&gt; '12',
    10 =&gt; '1023.7',
    11 =&gt; '0.0',
    12 =&gt; '19.4&lt;br&gt;12:27',
    13 =&gt; '13.5&lt;br&gt;06:30',
    14 =&gt; 'NNE',
    15 =&gt; '39&lt;br&gt;13:32',
    16 =&gt; '21&lt;br&gt;13:32',
  ),
  13 =&gt; 
  array (
    0 =&gt; 'Lucas Heights &lt;sup&gt;&amp;times;&lt;/sup&gt;',
    1 =&gt; '11 15:00',
    2 =&gt; '14.5',
    3 =&gt; '12.9',
    4 =&gt; '90',
    5 =&gt; 'NNW',
    6 =&gt; '7',
    7 =&gt; '4',
    8 =&gt; '13',
    9 =&gt; '7',
    10 =&gt; '1019.9',
    11 =&gt; '0.5',
    12 =&gt; '-&lt;br&gt;&amp;nbsp',
    13 =&gt; '-&lt;br&gt;&amp;nbsp',
    14 =&gt; '-&lt;br&gt;&amp;nbsp',
    15 =&gt; '-&lt;br&gt;&amp;nbsp',
    16 =&gt; '-&lt;br&gt;&amp;nbsp',
  ),
  14 =&gt; 
  array (
    0 =&gt; 'Mangrove Mountain &lt;sup&gt;&amp;times;&lt;/sup&gt;',
    1 =&gt; '11 15:00',
    2 =&gt; '12.3',
    3 =&gt; '11.9',
    4 =&gt; '97',
    5 =&gt; 'NNW',
    6 =&gt; '13',
    7 =&gt; '7',
    8 =&gt; '20',
    9 =&gt; '11',
    10 =&gt; '-',
    11 =&gt; '3.6',
    12 =&gt; '-&lt;br&gt;&amp;nbsp',
    13 =&gt; '-&lt;br&gt;&amp;nbsp',
    14 =&gt; '-&lt;br&gt;&amp;nbsp',
    15 =&gt; '-&lt;br&gt;&amp;nbsp',
    16 =&gt; '-&lt;br&gt;&amp;nbsp',
  ),
  15 =&gt; 
  array (
    0 =&gt; 'Mt Boyce &lt;sup&gt;&amp;times;&lt;/sup&gt;',
    1 =&gt; '11 15:00',
    2 =&gt; '9.3',
    3 =&gt; '6.1',
    4 =&gt; '80',
    5 =&gt; 'W',
    6 =&gt; '20',
    7 =&gt; '11',
    8 =&gt; '30',
    9 =&gt; '16',
    10 =&gt; '-',
    11 =&gt; '2.2',
    12 =&gt; '-&lt;br&gt;&amp;nbsp',
    13 =&gt; '-&lt;br&gt;&amp;nbsp',
    14 =&gt; '-&lt;br&gt;&amp;nbsp',
    15 =&gt; '-&lt;br&gt;&amp;nbsp',
    16 =&gt; '-&lt;br&gt;&amp;nbsp',
  ),
  16 =&gt; 
  array (
    0 =&gt; 'Nobbys Head - Newcastle &lt;sup&gt;&amp;times;&lt;/sup&gt;',
    1 =&gt; '11 15:00',
    2 =&gt; '13.6',
    3 =&gt; '13.3',
    4 =&gt; '98',
    5 =&gt; 'NW',
    6 =&gt; '22',
    7 =&gt; '12',
    8 =&gt; '28',
    9 =&gt; '15',
    10 =&gt; '-',
    11 =&gt; '1.2',
    12 =&gt; '-&lt;br&gt;&amp;nbsp',
    13 =&gt; '-&lt;br&gt;&amp;nbsp',
    14 =&gt; '-&lt;br&gt;&amp;nbsp',
    15 =&gt; '-&lt;br&gt;&amp;nbsp',
    16 =&gt; '-&lt;br&gt;&amp;nbsp',
  ),
  17 =&gt; 
  array (
    0 =&gt; 'Norah Head',
    1 =&gt; '11 15:10',
    2 =&gt; '14.5',
    3 =&gt; '13.3',
    4 =&gt; '92',
    5 =&gt; 'NNW',
    6 =&gt; '26',
    7 =&gt; '14',
    8 =&gt; '28',
    9 =&gt; '15',
    10 =&gt; '1020.4',
    11 =&gt; '5.4',
    12 =&gt; '15.7&lt;br&gt;10:30',
    13 =&gt; '12.9&lt;br&gt;07:12',
    14 =&gt; 'N',
    15 =&gt; '30&lt;br&gt;13:08',
    16 =&gt; '16&lt;br&gt;13:08',
  ),
  18 =&gt; 
  array (
    0 =&gt; 'Norfolk Is',
    1 =&gt; '11 15:10',
    2 =&gt; '16.0',
    3 =&gt; '11.6',
    4 =&gt; '75',
    5 =&gt; 'ESE',
    6 =&gt; '26',
    7 =&gt; '14',
    8 =&gt; '43',
    9 =&gt; '23',
    10 =&gt; '1021.1',
    11 =&gt; '0.0',
    12 =&gt; '17.5&lt;br&gt;12:50',
    13 =&gt; '13.5&lt;br&gt;03:35',
    14 =&gt; 'ESE',
    15 =&gt; '50&lt;br&gt;11:53',
    16 =&gt; '27&lt;br&gt;11:53',
  ),
  19 =&gt; 
  array (
    0 =&gt; 'North Head',
    1 =&gt; '11 15:10',
    2 =&gt; '-',
    3 =&gt; '-',
    4 =&gt; '-',
    5 =&gt; 'N',
    6 =&gt; '13',
    7 =&gt; '7',
    8 =&gt; '17',
    9 =&gt; '9',
    10 =&gt; '-',
    11 =&gt; '-',
    12 =&gt; '-&lt;br&gt;&amp;nbsp',
    13 =&gt; '-&lt;br&gt;&amp;nbsp',
    14 =&gt; 'NW',
    15 =&gt; '30&lt;br&gt;11:13',
    16 =&gt; '16&lt;br&gt;11:13',
  ),
  20 =&gt; 
  array (
    0 =&gt; 'Penrith',
    1 =&gt; '11 15:10',
    2 =&gt; '15.3',
    3 =&gt; '15.2',
    4 =&gt; '100',
    5 =&gt; 'N',
    6 =&gt; '13',
    7 =&gt; '7',
    8 =&gt; '17',
    9 =&gt; '9',
    10 =&gt; '-',
    11 =&gt; '2.8',
    12 =&gt; '15.8&lt;br&gt;14:43',
    13 =&gt; '12.4&lt;br&gt;06:06',
    14 =&gt; 'N',
    15 =&gt; '22&lt;br&gt;13:07',
    16 =&gt; '12&lt;br&gt;13:07',
  ),
  21 =&gt; 
  array (
    0 =&gt; 'Richmond Airport',
    1 =&gt; '11 15:10',
    2 =&gt; '15.1',
    3 =&gt; '13.7',
    4 =&gt; '92',
    5 =&gt; 'N',
    6 =&gt; '13',
    7 =&gt; '7',
    8 =&gt; '18',
    9 =&gt; '10',
    10 =&gt; '1019.4',
    11 =&gt; '6.4',
    12 =&gt; '15.2&lt;br&gt;14:51',
    13 =&gt; '10.3&lt;br&gt;06:37',
    14 =&gt; 'NNE',
    15 =&gt; '20&lt;br&gt;11:47',
    16 =&gt; '11&lt;br&gt;11:47',
  ),
  22 =&gt; 
  array (
    0 =&gt; 'Sydney - Observatory Hill',
    1 =&gt; '11 15:10',
    2 =&gt; '15.2',
    3 =&gt; '13.2',
    4 =&gt; '88',
    5 =&gt; '-',
    6 =&gt; '-',
    7 =&gt; '-',
    8 =&gt; '-',
    9 =&gt; '-',
    10 =&gt; '1019.5',
    11 =&gt; '2.6',
    12 =&gt; '15.2&lt;br&gt;14:39',
    13 =&gt; '13.2&lt;br&gt;07:10',
    14 =&gt; '-&lt;br&gt;&amp;nbsp',
    15 =&gt; '-&lt;br&gt;&amp;nbsp',
    16 =&gt; '-&lt;br&gt;&amp;nbsp',
  ),
  23 =&gt; 
  array (
    0 =&gt; 'Sydney Airport',
    1 =&gt; '11 15:10',
    2 =&gt; '16.4',
    3 =&gt; '13.0',
    4 =&gt; '80',
    5 =&gt; 'N',
    6 =&gt; '17',
    7 =&gt; '9',
    8 =&gt; '20',
    9 =&gt; '11',
    10 =&gt; '1019.3',
    11 =&gt; '1.4',
    12 =&gt; '17.4&lt;br&gt;10:27',
    13 =&gt; '13.3&lt;br&gt;06:48',
    14 =&gt; 'NW',
    15 =&gt; '33&lt;br&gt;11:10',
    16 =&gt; '18&lt;br&gt;11:10',
  ),
  24 =&gt; 
  array (
    0 =&gt; 'Sydney Harbour',
    1 =&gt; '11 15:10',
    2 =&gt; '15.5',
    3 =&gt; '-',
    4 =&gt; '-',
    5 =&gt; 'NNW',
    6 =&gt; '18',
    7 =&gt; '10',
    8 =&gt; '20',
    9 =&gt; '11',
    10 =&gt; '-',
    11 =&gt; '-',
    12 =&gt; '16.6&lt;br&gt;09:48',
    13 =&gt; '13.9&lt;br&gt;06:19',
    14 =&gt; 'WNW',
    15 =&gt; '24&lt;br&gt;12:23',
    16 =&gt; '13&lt;br&gt;12:23',
  ),
  25 =&gt; 
  array (
    0 =&gt; 'Sydney Olympic Pk',
    1 =&gt; '11 15:10',
    2 =&gt; '15.4',
    3 =&gt; '12.7',
    4 =&gt; '84',
    5 =&gt; 'N',
    6 =&gt; '9',
    7 =&gt; '5',
    8 =&gt; '13',
    9 =&gt; '7',
    10 =&gt; '-',
    11 =&gt; '2.8',
    12 =&gt; '15.9&lt;br&gt;10:14',
    13 =&gt; '12.7&lt;br&gt;07:13',
    14 =&gt; 'NNW',
    15 =&gt; '22&lt;br&gt;12:02',
    16 =&gt; '12&lt;br&gt;12:02',
  ),
  26 =&gt; 
  array (
    0 =&gt; 'Tuggeranong',
    1 =&gt; '11 15:10',
    2 =&gt; '12.2',
    3 =&gt; '5.6',
    4 =&gt; '65',
    5 =&gt; 'NW',
    6 =&gt; '7',
    7 =&gt; '4',
    8 =&gt; '15',
    9 =&gt; '8',
    10 =&gt; '1020.0',
    11 =&gt; '1.4',
    12 =&gt; '13.2&lt;br&gt;14:59',
    13 =&gt; '7.1&lt;br&gt;07:15',
    14 =&gt; 'NW',
    15 =&gt; '15&lt;br&gt;14:26',
    16 =&gt; '8&lt;br&gt;14:26',
  ),
  27 =&gt; 
  array (
    0 =&gt; 'Williamtown',
    1 =&gt; '11 15:10',
    2 =&gt; '13.6',
    3 =&gt; '12.9',
    4 =&gt; '95',
    5 =&gt; 'NNW',
    6 =&gt; '15',
    7 =&gt; '8',
    8 =&gt; '17',
    9 =&gt; '9',
    10 =&gt; '1021.3',
    11 =&gt; '2.2',
    12 =&gt; '14.7&lt;br&gt;10:58',
    13 =&gt; '10.2&lt;br&gt;07:04',
    14 =&gt; 'WNW',
    15 =&gt; '20&lt;br&gt;11:31',
    16 =&gt; '11&lt;br&gt;11:31',
  ),
)

As for archiving, I'd suggest storing into a database. For updating every 10 minutes, you should probably use a cron job, if you can.

Posted: Sun Jul 11, 2004 12:41 am
by Simon Angell
cheers man, ill have a play around with it.

Posted: Mon Jul 12, 2004 9:56 pm
by Simon Angell
Hi.
I have been playing around with the above and with resonalble sucess, but it seems to me that its just adding extra complication to a simple thing.

The above grabs the data needed, and then some, i have got it to display just what i need using var_export($matches[4]); - which is good, but getting it to display the out put data

Code: Select all

array ( 
    0 => 'Canberra Airport', 
    1 => '11 15:10', 
    2 => '12.4', 
    3 => '4.9', 
    4 => '61', 
    5 => 'WNW', 
    6 => '11', 
    7 => '6', 
    8 => '17', 
    9 => '9', 
    10 => '-', 
    11 => '0.0', 
    12 => '13.7<br>14:14', 
    13 => '6.6<br>07:48', 
    14 => 'NNW', 
    15 => '20<br>14:20', 
    16 => '11<br>14:20', 
  ),
into this form
Updated 11th at 12:30 PM
Temperature 11.0 °C
Heat Index - °C
Dewpoint 7.0 °C
Humidity 76 %
Wind Direction WSW
Wind Speed 9 Km/H
Wind Chill 10.0 °C
Wind Gusts 13 Km/H
Barometer - Hpa
Rain since 9am 0.0 mm
is proving difficult for my amatuer brains.

I have tried save the array data into a file for my data grab script to grab and parse, but can not seem to get the file to save. if i can get this done then the grab script will work no probs.

If there is an easier way to get the data of the 4th array to to display as the above then can you give me some clues on how to do it? or even just to save the bloody array output to a file :lol: !

Posted: Mon Jul 12, 2004 11:29 pm
by John Cartwright
look into [php_man]foreach[/php_man]

Posted: Tue Jul 13, 2004 1:44 am
by Simon Angell
Thanks heaps, got the puppy to display just what i want! (after a little array combining!)

Full code now looks like this...

Code: Select all

<?php 

$data = file_get_contents("http://www.bom.gov.au/products/IDN65066.shtml"); 

preg_match_all('#<!--\s+DATA,.*?-->\s*<\s*tr[^>]*?>(\s*<\s*td[^>]*?>\s*(.*?)<\s*/\s*td[^>]*?>)+\s*<\s*/\s*tr[^>]*?>#is',$data,$matches); 

$data = $matches[0]; 

$matches = array(); 
foreach($data as $match) 
{ 
   preg_match_all('#(<\s*td[^>]*?>\s*(.*?)\s*<\s*/\s*td[^>]*?>)#is',$match,$newmatches); 
   $matches[] = $newmatches[2]; 
} 


// title arrays
$a = array("AWS", "Date and Time", "Temperature (deg C)" , "Dewpoint (deg C)", "Humidity (%)", "Wind Direction", "Wind Speed (Km/hr)", "Wind Speed (knots)", "Gust Speed (Km/hr)", "Gust Speed (knots)", "Pressure (hPa)", "Rain since 9am (mm)");
$b = $matches[4];

// merging them into the new array $c
foreach($a as $i => $v)
{
     $c[$b[$i]] = $v;
}

// printing result
foreach($c as $k => $v)
{
     echo " <img src="pics/logosbgrounds/spacer.gif" width="5"> $v: $k.<br>\n";
}

?>

Displays as
AWS: Canberra Airport.
Date and Time: 13 16:20.
Temperature: 9.6.
Dewpoint: 3.8.
Humidity: 68.
Wind Direction: NNW.
Wind Speed (Km/hr): 17.
Wind Speed (knots): 9.
Gust Speed (Km/hr): 18.
Gust Speed (knots): 10.
Pressure (hPa): 1023.0.
Rainfall since 9am (mm): 0.0.

Thanks heaps!