Wikipedia Reflection

Edited by Vacilando. Last updated 7. October, 2016.

Ever wished providing the beauty that is Wikipedia on your own website? Now you can: just include this PHP script wherever you want Wikipedia to appear!
Note: It is highly recommended to temporarily cache pages fetched from Wikipedia. That will assure quicker execution, smaller bandwidth requirements, and also less load on the Wikipedia servers.
Statement published after some e-mails on behalf of Wikimedia Foundation asking me to remove this script:
  1. I don't agree with the Foundation blocking remote loading. We all contribute to the Wikipedia under GFDL and therefore have the right to display the Wikipedia's content. There is no difference between requesting a Wikipedia page via a graphical browser (such as Firefox or Google Chrome) and a command-line browser such as cURL.
  2. The Foundation keeps itself busy blocking remote loading. My own page running this script was blocked. I do not think blocking access is an appropriate way of spending money people donate to the Foundation in hope of increasing free content and openness. While blocking remote loading is not a friendly act taken by the Foundation, in the long term it will prove to be a rather ineffective. A script like this is boringly simple and anyone can write a new one.
  3. Even though my own test application of this script was blocked by Wikimedia Foundation, I prefer to keep the old simple script up on this page as a reminder of my first assertion, and as an inspiration for others to stand up for the freedom on the Internet.
There are services, e.g., that charge incredible fees for a very similar thing!
I do not agree with compulsory pricing. This Wikipedia Reflection script can be used free of charge. However, if you enjoy it, you are encouraged to consider donating a few coins.
Thanks to:
  • Wikipedia voluntary contributors (distinct from Wikimedia Foundation)
  • David Polanco and Jim Worthen from
  • and many others
  • It would be really cool to be able to edit Wikipedia from another site (perhaps using Ajax?)
  • All ideas, snippets of code and comments are very welcome!
# Wiki Reflection Version: 2.3 ( see )
# 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;}

$default_title = 'Vacilando'; # If you do not specify a title, this will be your default page.

$sourceurl = ''; # 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 ) );

callback( $buffer ) {


# 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', '"', $buffer );
$buffer = str_replace( '"/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="', $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>&nbsp;<sup><a href="' . $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="" target="_blank"><small>Wikipedia, the Free Encyclopedia</small></a><small>
    (using <a href=""><small>Wikipedia Reflection Script</small></a>)</small></i></td>
    <td><form method="get"><br><input type="text" name="title" size="30">&nbsp;<input type="submit" value="search"></form></td>
    <td><div align="right"><a href="" 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>.';


# Your page header comes here...'

#include $sourceurl . $title_wiki;
$cuu = new CURL;
$cuu -> get( $sourceurl . $title_wiki );

# Your page footer comes here...'

# Define the cURL class:
class CURL {
$callback = false;

setCallback($func_name) {
$this->callback = $func_name;

doRequest($method, $url, $vars) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
#curl_setopt($ch, CURLOPT_HEADER, 1);
#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);
    if (
$data) {
      if (
$callback = $this->callback;
$this->callback = false;
call_user_func($callback, $data);
      } else {
    } else {

get($url) {
$this->doRequest('GET', $url, 'NULL');

post($url, $vars) {
$this->doRequest('POST', $url, $vars);

Related links

  • Puzzler

    Saturday 4. December, 2004, Anderlecht, Brussel, Belgium

     Wikipedia mirror

    Return to the article list.