Welcome to "Readable" Scramble (view source)

<?php

/*
Title:                Cambridge Exercise
Filename:             cambridge_exercise.php
Function:             Scrambles all the letters in a word except for the first and last.
Date last modified:   1 December 05
Coder:                Leif Gregory
Website:              http://www.devtek.org/test/cambridge_exercise.php
E-mail:               leif@devtek.org

Copyright (C) 2005 Leif Gregory

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
*/

if ($_POST['submit'] == "Submit")
{
  
$safe['text'] = stripslashes($_POST['text']);
  
$orig_words explode(" "$safe['text']);
  foreach(
$orig_words as $word)
  {
    if (
strlen($word) > 3)
    {
      
$word trim($word); #Clean up any multiple spaces
      
      
$fc $word{0}; #Get the first character
      
      //Preventing punctuation from jacking us up
      
if (!ctype_alpha(substr($word, -1))) #Is the last character a letter
      
{
        
preg_match("/([a-z]+)/i"$word$chars); #Pull out all the letters
        
preg_match("/[a-z]+(.*)/i"$word$non_chars); #Pull out everything after the letters     
        
$lc substr($chars[1], -1) . $non_chars[1]; #Grab the last character of the letters
        
$mc substr($chars[1], 1, -1); #Get all the middle characters
        /*
          Just a note on the above. This will break if you have a word like: "HEL123LO".
          (hey.. anything is possible with a user right! <grin>). It'll also break
          if the "word" is entirely composed of a number. However, if the
          numbers fall at the end of the word, then it'll be fine. I'll leave it
          as an exercise to you since the only purpose of this was to test the 
          theory of readability after scrambling the interim letters in a word.
        */
      
}
      else
      {
        
$lc substr($word, -1); #Get the last character
        
$mc substr($word1, -1); #Get all the middle characters
      
}
      
      
$scrambled  .= $fc str_shuffle($mc) . $lc " "#Put the text back together scrambled
    
}
    else 
      
$scrambled .= $word " "#A less than 4 char word
  
}  
}

$scrambled htmlentities($scrambled); #A little sanitization before we echo it out on-screen

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
 <head>
  <meta http-equiv="pragma" content="no-cache" />
  <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
  <meta http-equiv="content-language" content="en-us" />
  <meta name="revisit-after" content="14 days" />
  <meta name="robots" content="follow,index" />
  <meta name="rating" content="general" />

  <title>Cambridge Study Exercise</title>
  <meta name="author" content="Leif Gregory" />
  <meta http-equiv="reply-to" content="leif@devek.org" />
  <meta name="keywords" content="cambridge university human mind read letter switch scramble first last research order whole word" />
  <meta name="description" content="Script to test the so-called Cambridge study of mixing up middle word letters while still being readable" />
  <meta name="abstract" content="Script to test the so-called Cambridge study of mixing up middle word letters while still being readable" />

  <style type="text/css">
   @import url("includes/site.css");
  </style>

  <link rel="stylesheet" type="text/css" title="Site CSS" href="includes/site.css" />
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-74586-2";
urchinTracker();
</script> 
 </head>
 <body>
  <div id="box">
  <div id="content">
  <h2>Welcome to "Readable" Scramble (<a href="cambridge_exercise.php?showsource">view source</a>)</h2>
  
<?php if ($_POST['submit'] != "Submit" && $_SERVER['QUERY_STRING'] != "showsource") { ?>
  <p>This little exercise came about after someone sent me an e-mail with the
     below statement in it:</p>
  <blockquote>Aoccdrnig to a rscheearch at Cmabrigde Uinervtisy, it deosn't mttaer 
     in waht oredr the ltteers in a wrod are, the olny iprmoetnt tihng is taht 
     the frist and lsat ltteer be at the rghit pclae. The rset can be a toatl 
     mses and you can sitll raed it wouthit porbelm. Tihs is bcuseae the huamn 
     mnid deos not raed ervey lteter by istlef, but the wrod as a wlohe.</blockquote>
  <p>I decided to put the theory to the test. After running quite a few test
     paragraphs through the script it was easy to see that the above statement,
     taken at face value, was false. I looked around on the internet, as I'm 
     prone to do when looking for answers, and ran across a 
     <a href="http://www.mrc-cbu.cam.ac.uk/~mattd/Cmabrigde/">page by Matt Davis</a>
     which basically explains why the original message worked, and
     why many of the test paragraphs run through my script did not. Further, Matt
     seems to have pretty much determined that this was never a Cambridge study
     at all and is just a hoax.</p>
  <p>Basically, the author of the original message carefully mangled the letters
     in the middle of the words so that it appeared to support the intended message.
     However, decent randomization of the middle characters, especially of longer
     complex words or words like crap and carp which are two valid words, make
     the sentence or paragraph unreadable.</p>
  <p>At any rate, I decided to make it available for others to play with, so have
     fun.</p>
  <p>Enter some text in the textbox and click submit. You'll get back your text
     with the letters in each word, except for the first and last, scrambled.</p>
<?php }

if (
$_SERVER['QUERY_STRING'] != "showsource") { 
?>
  <form action="<?php htmlentities($_SERVER['PHP_SELF'])?>" method="POST">
  <textarea name="text" cols="80" rows="10"><?php echo $_POST['submit']=="Submit" $safe['text'] : "";?></textarea><br />
  <input type="submit" name="submit" value="Submit" />
  </form> 
<?php 

if (
$_POST['submit'] == "Submit"  && $_SERVER['QUERY_STRING'] != "showsource") { ?>
  <h3>Here's your "Readable" Scramble</h3>
  <p style="border-style: inset; padding: 5px;"><?php echo $scrambled;?></p>
<?php 

if (
$_SERVER['QUERY_STRING'] == "showsource")
  
highlight_file('cambridge_exercise.php');
?>
  </div>
  </div>
 </body> 
</html>