金相場の自動取得を行い演算後HTMLで出力したいのですが下記のソースでおかしな部分を教えてください。

今まで利用できていたのですが、最近できなくなりましました。
なお、取得元が2箇所あるのですが、どちらからでもかまいません。取得できる方からと考えています。
\<?php
$URL = 'http://www.olympic-gold.co.jp/';
$html = '';
$fp = fopen($URL, 'r') or die("fopen");
while (!feof($fp)) {
$html = fread($fp, 60000);
}
fclose($fp);

preg_match('|K24</td>
<td class="count_up" width="25%">(.*?)</td>|', $html, $matches);
$k24 = strtr($matches[1], array("," => "")) * 0.85;

echo round("$k24");
?>

\<?php
$URL = 'http://www.net-japan.co.jp/';
$html = '';
$fp = fopen($URL, 'r') or die("fopen");
while (!feof($fp)) {
$html .= fread($fp, 1024);
}
fclose($fp);

preg_match('|K18</td>
<td width="30%" align="right" bgcolor="#E6E6E6">(.*?)&nbsp;</td>|', $html, $matches);
$k18 = strtr($matches[1], array("," => "")) * 0.85;

echo round("$k18");
?>

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2011/06/13 17:08:05
  • 終了:2011/06/15 09:07:36

ベストアンサー

id:dothan No.1

どたん回答回数145ベストアンサー獲得回数252011/06/13 17:52:34

ポイント200pt

計算式の意図が分からなかったのですが、「スクラップ買取価格」のK24の価格を0.85倍すればよろしいのでしょうか?

下記のようにしてみてください。


<?php
$URL = 'http://www.olympic-gold.co.jp/';
$html = file_get_contents($URL);
if ($html == FALSE) {
    echo "error: {$URL} not found.";
    exit(1);
}
$ret = preg_match("/K24<\/td>[^<]+<td[^\>]+>([0-9\,]+)<\/td>/ms", $html, $matches);
if ($ret == 0) {
    echo "error: K24 price not found.";
    exit(1);
}
$k24 = preg_replace("/,/", "", $matches[1]) * 0.85;
echo round($k24);
?>
id:birdtail

ありがとうございます。

K24は取得できたのですが、K18の項目が二つあり後者の方を取得するにはどうすればよろしいでしょうか?

2011/06/14 15:21:24

その他の回答(1件)

id:dothan No.1

どたん回答回数145ベストアンサー獲得回数252011/06/13 17:52:34ここでベストアンサー

ポイント200pt

計算式の意図が分からなかったのですが、「スクラップ買取価格」のK24の価格を0.85倍すればよろしいのでしょうか?

下記のようにしてみてください。


<?php
$URL = 'http://www.olympic-gold.co.jp/';
$html = file_get_contents($URL);
if ($html == FALSE) {
    echo "error: {$URL} not found.";
    exit(1);
}
$ret = preg_match("/K24<\/td>[^<]+<td[^\>]+>([0-9\,]+)<\/td>/ms", $html, $matches);
if ($ret == 0) {
    echo "error: K24 price not found.";
    exit(1);
}
$k24 = preg_replace("/,/", "", $matches[1]) * 0.85;
echo round($k24);
?>
id:birdtail

ありがとうございます。

K24は取得できたのですが、K18の項目が二つあり後者の方を取得するにはどうすればよろしいでしょうか?

2011/06/14 15:21:24
id:a-kuma3 No.2

a-kuma3回答回数4583ベストアンサー獲得回数19232011/06/14 00:03:15

ポイント50pt

「今まで利用できていた」ときと、HTML の内容が変わったのだと思います。

回答を書いている時点では、K24 は、

<td class="metal_k" width="25%">K24</td>
<td class="count_up" width="25%">3,961</td>

K18 は、

<td class="metal_k">K18</td>
<td class="count_up">3,017</td>

という表記になってます。

元のソースは、特に K18 の方が色の指定や &nbsp; が数値の後に入っていることを

前提にしているので、今のページ内容から値が取得できていません。

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません