Written on
八月 10, 2008 – 12:10 上午 | by paopao
今天是奥运第一天,决出了7块金牌,7块银牌,9块铜牌。相信大家对奖牌榜都是很关注的,一般我是看新浪体育的奖牌榜的。不过为了把奖牌榜转载到BBS上,想要弄一个ASCII版的。我是个懒人,不想每次更新奖牌榜的时候都重新手动做一遍,就用php写了个类,主要是从新浪体育抓取奖牌榜数据,然后输出成ASCII的格式。
class MedalBoard {
public $sourceURL, $status, $data, $countrycount;
public function __construct() {
$sourceURL = 'http://match.2008.sina.com.cn/bj2008/all_medal.php';
if( $doc = file_get_contents($sourceURL) ){
$posa = strpos($doc, '<!-- Status begin -->');
$posb = strpos($doc, '<!-- Status end -->');
$posc = strpos($doc, '<!-- 数据 begin -->');
$posd = strpos($doc, '<!-- 数据 end -->');
$statuspart = substr($doc, $posa, $posb - $posa);
$datapart = substr($doc, $posc, $posd - $posc);
if(!preg_match("/<h1>(.*)</h1>[^<]*<span[^>]*>([^<]*)</span>.*[^<]*<label><img[^>]*> ([^<]*)</label>[^<]*<label><img[^>]*> ([^<]*)</label>[^<]*<label><img[^>]*> ([^<]*)</label>/i", $statuspart, $this->status))
$this->status = false;
$this->countrycount = preg_match_all("/<tr>[^<]*<td>(d*)</td>[^<]*<td align.*d">(.*)</a></td>[^<]*<td>(d*)</td>[^<]*<td>(d*)</td>[^<]*<td>(d*)</td>[^<]*<td>(d*)</td>[^<]*<!-- <td>d*<[^<]*</tr>/i", $datapart, $this->data, PREG_SET_ORDER);
} else
echo "Get content: '".$sourceURL."' error!rn";
}
public function ascii() {
$result =" [1;37m2008北京奥运会 ".$this->status[1]."[0mnn";
$result .=" [1;37m".$this->status[2]."[0mnn";
$result .= " [1m排名[0m [1m国家/地区 [0m [1;33m金牌[0m [1;37m银牌[0m [1;31m铜牌[0m [1;35m总数[0mn";
foreach($this->data as $items) {
$result .= " ";
if(($items[2] == '中国') || ($items[2] == '中国香港') || ($items[2] == '中华台北')) {
$result .= sprintf("[1;32m%-6s[0m",$items[1]);
$result .= sprintf("[1;32m%-13s[0m",$items[2]);
} else {
$result .= sprintf("[1m%-6s[0m",$items[1]);
$result .= sprintf("[1m%-13s[0m",$items[2]);
}
$result .= sprintf("[1;33m%-6s[0m",$items[3]);
$result .= sprintf("[1;37m%-6s[0m",$items[4]);
$result .= sprintf("[1;31m%-6s[0m",$items[5]);
$result .= sprintf("[1;35m%-3s[0m",$items[6]);
$result .= "n";
}
return $result;
}
}
如果你不喜欢网上看到的奖牌榜的外观,也可以用这个类来做一个自己的奖牌榜,比如弄一个和自己blog色调比较搭配的奖牌榜摆在侧边栏,只要加一个不同的输出格式的函数就行了,不过我是懒得弄了,想要自己做的朋友可以随意拿去用 ^_^
Popularity: 26% [?]
Tags: 奖牌榜, 奥运会
Posted in PHP, 体育 | 4 Comments »