hn4u @ Last updated 21/11/04 22:42
Go to my homepage at http://4u.jcisio.com
Full version available at http://4u.jcisio.com/r/article1549.htm

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:


hainam4u @ Last updated 21/11/04 22:42
Go to my homepage at http://4u.jcisio.com