Hvordan søke nedover i kode etter spesifik tekst?
Hei!På http://no.php.net/fopen fant jeg en svært nyttig funksjon for å hente info fra eksterne websider. Med den lille koden like nedenfor henter php all kode inn i en matrise og "dumper den ut" på egen side. Nyttig funksjon!
Jeg er en tidligere student fra China Textile University som er interessert i å hente ut info om endringer i en prisindex for bomuld i Kina. Men hvordan skal jeg så søke igjennom koden til den eksterne websiden, ned til den rette linjen, og hente ut info om siste index-verdi? Med denne koden på egen server så henter du hele websiden hos China Cotton Index og dumper den ut på egen webside;
<?php
function get_content($url) {
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_HEADER, 0);
ob_start();
curl_exec ($ch);
curl_close ($ch);
$string = ob_get_contents();
ob_end_clean();
return $string;
}
$content = get_content ("http://www.cncotton.com/price/cncottonindex_en.asp");
var_dump ($content);
?>
Det er akkurat denne koden som ligger på http://home.no.net/laroald/webhente.php - og som viser siste Cotton Index. Men hvordan (1) søke (linje for linje eller?) ned til koden "CNCotton B", (2) hente siste dato og (3) index-verdi - som alltid er 4 og 5 linjer nedenfor "CNCotton B"?
Skal jeg benytte readline eller foreach eller? Jeg har ikke lykkes med noen av disse.
Etter å ha funnet "CNCotton B" kan det være en ide å søke videre etter "center">" og så hente ut de neste 10 tegnene? For så igjen å søke etter "center">" og hente ut Index-verdi (5 tegn)? Men hva er optimal måte å gjøre dette?
Her er koden midt nede i siden http://www.cncotton.com/price/cncottonindex_en.asp som jeg fokuserer på. Det er verdiene "2006-6-12" (dagens dato eller 1,2, max 3 dater tilbake) og index "14567" jeg vil søke frem til:
.......
<td height="22" valign="top" bgcolor="#CDD8FC" class="ss1">
<div align="center"><b>CNCotton B</b></div>
</td>
</tr>
<tr bordercolor="#666666">
<td> <div align="center">2006-6-12</div></td>
<td> <div align="center">14567</div></td>
<td> <div align="center">14081</div></td>
</tr>
........
På forhånd; takk for hjelpen.
hilsen
Lars Roan
Bergen, N.