Hải Nam
Lấy dữ liệu từ VnExpress
Bạn hãy xem qua thí dụ này đã. Chương trình rất bé, chỉ gồm 1 tập tin PHP duy nhất 2KB, 40 dòng lệnh.
CODE (PHP)
<?
function getfile($url)
{
if (substr($url, 0, 7)!='http://') return 'no';
foreach (array('d', 'p') as $k) if (!empty($_GET[$k])) $param[]=$k.'='.urlencode($_GET[$k]);
return file_get_contents($url.(is_array($param)?(strpos('?',$url)?'&':'?').implode('&', $param):''));
}
function format($data)
{
$data = preg_replace('#\<table border\=0 cellpadding\=0 cellspacing\=0 width\=\"770\" align\=center\>.*\<\/table\>#s', '', $data);
$data = preg_replace('#<table width="100%" cellspacing=0 cellpadding=0 border=0 height=1>.+?table>#s', '', $data);
$data = preg_replace('#<TABLE.{1,120}<TABLE cellSpacing=1 cellPadding=3 width="100%" bgColor=\#ffffff border=0>(.+?TABLE>){5}#ms', '', $data);
$data = str_replace('ShowPopupUnder();ShowPopupAd();', '', $data);
$data = str_replace('<script language="JavaScript">ShowAdLogoNew()</script>', '', $data);
$data = str_replace('<script language="JavaScript">ShowAdLogoNew(1)</script>', '', $data);
$data = str_replace('<script language="JavaScript">DisplayBanner();</script>', '', $data);
$data .= "<script>var CurrentFolder='{$PHP_SELF}?id={$GLOBALS['page']}&';</script>";
return $data;
}
function fixlink($data, $loc='')
{
$data = preg_replace('#http://([a-z]+\.)?vnexpress.net#', '/', $data);
$data = preg_replace('/(src|href)=([\'\"])(?!\/|\'|"|http:)/', '\1=\2http://vnexpress.net/'.$GLOBALS['page'], $data);
$data = preg_replace('/(src|href)=([\'"])\/([^\'"]+\.[^\'"]+)\2/', '\1=\2http://vnexpress.net/\3\2', $data);
$data = preg_replace('/href=([\'"])\/([^\'"]+?)\1/e', '"href=\1?id=".urlencode("\2")."\1"', $data);
$data = preg_replace('/"([^"]+?)(?=MenuBar.js")/', '"?menu=\1', $data);
$data = preg_replace('/"[^"]+?(?=JavaScript:)/', '"', $data);
$data = str_replace('http://vnexpress.net/Library/Library.js', '?lib=http://vnexpress.net/Library/Library.js&loc='.$GLOBALS['page'], $data);
$data = str_replace("'/?d='", "'d='", $data);
return $data;
}
function js_menu($url)
{
$js = fixlink(getfile($url));
$js = preg_replace('/\', Link, \'/', '\', Link.replace(/^\//, "?id="), \'', $js);
die($js);
}
function js_lib($url) {die(fixlink(getfile($url), $_GET['loc']));}
if ($_GET['menu']) js_menu($_GET['menu']);
if ($_GET['lib']) js_lib($_GET['lib']);
$page = empty($_GET['id'])? 'Vietnam/Home/' : $_GET['id'];
echo fixlink(format(getfile('http://vnexpress.net/'.$page)));
?>
Vì muốn giữ tính đơn giản, tôi bỏ qua không xử lí một số chi tiết sâu hơn nên script này không được hoàn thiện lắm. Dưới đây là phần phân tích: