<? # Wiki Reflection Version: 2.3 ( see http://www.vacilando.org/index.php?x=7065 ) # Open source license: GPL
# Make sure to force Unicode for Wikipedia content -- otherwise all foreign scripts will display utter nonsense. This should of course be in your header, though my experimenting shows it may as well stay right here. echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />';
# Make sure images do not display with a border. echo '<style TYPE="text/css"> <!-- img{border: 0 none;} --> </STYLE>';
$default_title = 'Vacilando'; # If you do not specify a title, this will be your default page.
$sourceurl = 'http://en.wikipedia.org/wiki/'; # This URL needs adjusting sometimes. $pathfromroot = substr( $_SERVER['REQUEST_URI'], 0, strpos( $_SERVER['REQUEST_URI'], "?" ) ); $title_wiki = $_GET['title']; if ($title_wiki == "") { $title_wiki = $default_title; } $nicetitle = str_replace( "_", " ", stripslashes( $title_wiki ) );
function callback( $buffer ) {
global $nicetitle; global $title_wiki; global $sourceurl;
# Separate the article content $buffer = substr( $buffer, strpos( $buffer, '<!-- start content -->' ) ); $buffer = substr( $buffer, 0, strpos( $buffer, '<div class="printfooter">' ) ); # Replace relative links (use another wiki server) $buffer = str_replace( '"/w/skin', '"http://en.wikipedia.org/w/skin', $buffer ); $buffer = str_replace( '"/skins', '"http://en.wikipedia.org/skins', $buffer ); # Replace relative links (use this server) $buffer = str_replace( '"/wiki/', '"' . $pathfromroot . '?title=', $buffer ); # Remove edit links $buffer = str_replace( ">edit<", "><", $buffer ); $buffer = str_replace( "[<", "<", $buffer ); $buffer = str_replace( ">]", ">", $buffer ); $buffer = str_replace( 'href="/w/index.php?', 'target="_blank" href="http://en.wikipedia.org/w/index.php?', $buffer ); # These are typically links to non-existent pages, so the Wikipedia edit page has to open.
if ( $buffer <> '' ) { $buffer = '<table width=100% cellspacing=0 cellpadding=1 bgcolor="#EEEEEE" border=0><tr><td> <p><font size="+2"><b>' . $nicetitle . '</b> <sup><a href="http://en.wikipedia.org/w/index.php?title=' . $title_wiki . '&action=edit" title="Edit this article at Wikipedia" target="_blank"><font color="red" size="-1">edit</font></a></sup></font> <br><i><small>extracted from </small><a href="http://www.wikipedia.org" target="_blank"><small>Wikipedia, the Free Encyclopedia</small></a><small> (using <a href="http://www.vacilando.org/index.php?x=7065"><small>Wikipedia Reflection Script</small></a>)</small></i></td> <td><form method="get"><br><input type="text" name="title" size="30"> <input type="submit" value="search"></form></td> <td><div align="right"><a href="http://www.gnu.org/copyleft/fdl.html" target="_blank"><img src="_misc/gnu-fdl.png" border="0"></a></div></td></tr></table><p>' . $buffer; } else { $buffer = '<p>Unfortunately, no content could be extracted! <p><a href="javascript:history.go(-1)">Return to the previous page</a> or consult the <a target="_blank" href="' . $sourceurl . $title_wiki . '">Wikipedia article on "' . $nicetitle . '"</a>.'; }
return $buffer; }
# Your page header comes here...'
ob_start("callback"); #include $sourceurl . $title_wiki; $cuu = new CURL; echo $cuu -> get( $sourceurl . $title_wiki ); ob_end_flush();
# Your page footer comes here...'
# Define the cURL class: class CURL { var $callback = false;
function setCallback($func_name) { $this->callback = $func_name; }
function doRequest($method, $url, $vars) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); #curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); #curl_setopt($ch, CURLOPT_USERAGENT, 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)'); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt'); curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt'); if ($method == 'POST') { curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $vars); } $data = curl_exec($ch); curl_close($ch); if ($data) { if ($this->callback) { $callback = $this->callback; $this->callback = false; return call_user_func($callback, $data); } else { return $data; } } else { return curl_error($ch); } }
function get($url) { return $this->doRequest('GET', $url, 'NULL'); }
function post($url, $vars) { return $this->doRequest('POST', $url, $vars); } }
?>
|