<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>spechal.com &#187; PHP</title>
	<atom:link href="http://spechal.com/category/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://spechal.com</link>
	<description>[spesh-uhl]</description>
	<lastBuildDate>Thu, 21 Jan 2010 11:50:50 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>phpize not found</title>
		<link>http://spechal.com/2009/12/06/phpize-not-found/</link>
		<comments>http://spechal.com/2009/12/06/phpize-not-found/#comments</comments>
		<pubDate>Sun, 06 Dec 2009 02:12:57 +0000</pubDate>
		<dc:creator>Spechal</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[apt-get]]></category>
		<category><![CDATA[phpize]]></category>
		<category><![CDATA[yum]]></category>

		<guid isPermaLink="false">http://spechal.com/?p=106</guid>
		<description><![CDATA[This error is typically generated when you don&#8217;t have the PHP development libraries installed.
Installing the libraries via repository is the easiest and quickest fix.
For Fedora/Red Hat:
yum install php5-dev
For Ubuntu/Debian:
apt-get install php5-dev
]]></description>
			<content:encoded><![CDATA[<p>This error is typically generated when you don&#8217;t have the PHP development libraries installed.</p>
<p>Installing the libraries via repository is the easiest and quickest fix.</p>
<p>For Fedora/Red Hat:<br />
yum install php5-dev</p>
<p>For Ubuntu/Debian:<br />
apt-get install php5-dev</p>
]]></content:encoded>
			<wfw:commentRss>http://spechal.com/2009/12/06/phpize-not-found/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Python MySQL Associative Array</title>
		<link>http://spechal.com/2009/11/27/python-mysql-associative-array/</link>
		<comments>http://spechal.com/2009/11/27/python-mysql-associative-array/#comments</comments>
		<pubDate>Fri, 27 Nov 2009 23:26:04 +0000</pubDate>
		<dc:creator>Spechal</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://spechal.com/?p=87</guid>
		<description><![CDATA[By default, the MySQLdb module to access a MySQL database returns the data as an integer indexed array.  Sometimes this is not desirable and an associative array is preferred, such as the mysql_fetch_assoc function in PHP.  In addition, we will be using the pprint module which is similar PHP&#8217;s print_r
Here is the Python [...]]]></description>
			<content:encoded><![CDATA[<p>By default, the MySQLdb module to access a MySQL database returns the data as an integer indexed array.  Sometimes this is not desirable and an associative array is preferred, such as the mysql_fetch_assoc function in PHP.  In addition, we will be using the pprint module which is similar PHP&#8217;s print_r</p>
<p>Here is the Python equivalent:</p>
<pre class="python" name="code">
import MySQLdb
import pprint
# connect to the database here
db = MySQLdb.connect(...)
c = db.cursor(cursorclass=MySQLdb.cursors.DictCursor)
query = "SELECT `name`, `address` FROM `table`"
c.execute(query)
rows = c.fetchall()
c.close()
pprint.pprint(rows) # i.e. print_r($rows)
</pre>
<p>Hope that helps someone.</p>
]]></content:encoded>
			<wfw:commentRss>http://spechal.com/2009/11/27/python-mysql-associative-array/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP Registry Pattern Class for PHP5</title>
		<link>http://spechal.com/2009/11/16/php-registry-pattern-class-for-php5/</link>
		<comments>http://spechal.com/2009/11/16/php-registry-pattern-class-for-php5/#comments</comments>
		<pubDate>Mon, 16 Nov 2009 14:08:18 +0000</pubDate>
		<dc:creator>Spechal</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Patterns]]></category>

		<guid isPermaLink="false">http://spechal.com/?p=34</guid>
		<description><![CDATA[The following class is used as a registry to hold elements.  Usage is as follows:
$registry = Registry::getInstance();
$registry->set('key', 'value');
echo $registry->get('key'); //prints value

&#60;?php
  /**
   * PHP5 Registry Class
   *
   * @package Registry
   * @author Travis Crowder &#60;travis.crowder@spechal.com&#62;
   * @see MIT License
   * @copyright [...]]]></description>
			<content:encoded><![CDATA[<p>The following class is used as a registry to hold elements.  Usage is as follows:</p>
<pre class="php" name="code">$registry = Registry::getInstance();
$registry->set('key', 'value');
echo $registry->get('key'); //prints value</pre>
<pre class="php" name="code">
&lt;?php
  /**
   * PHP5 Registry Class
   *
   * @package Registry
   * @author Travis Crowder &lt;travis.crowder@spechal.com&gt;
   * @see MIT License
   * @copyright Travis Crowder
   */

  /**
   *  Registry
   *
   *  The Registry class is used to store values in a global fashion
   *  @final
   *  @see ArrayObject
   */
  final class Registry extends ArrayObject {

    /**
     * Instance object
     *
     * @staticvar object Registry
     */
    static private $_instance = NULL;

    /**
     *  @access private
     *  @var mixed Array to hold the values.
     */
    private $_registry;

    /**
     * Using Singleton pattern with public constructor due to parent class
     *
     * @access public
     * @return void
     */
    public function __construct($array = array(), $flags = parent::ARRAY_AS_PROPS){
      parent::__construct($array, $flags);
    }

    /**
     * Singleton accessor to the object
     *
     * @access public
     * @return Registry $instance Instance of the object
     */
    static public function getInstance(){
      if(self::$_instance === NULL){
        self::$_instance = new Registry;
      }
      return self::$_instance;
    }

    /**
     *  Get method
     *
     *  @access public
     *  @return mixed Element in the registry
     */
    static public function get($key){
      $instance = self::getInstance();
      if(!$instance-&gt;checkOffset($key))
        return false; #throw new Exception($key . ' is not set in the registry');
      return $instance-&gt;returnOffset($key);
    }

    /**
     *  Set method
     *
     *  Accessor method used to set a value to a registry key.
     *  @access public
     *  @static
     *  @return void
     */
    static public function set($key, $value){
      $instance = self::getInstance();
      $instance-&gt;setOffset($key, $value);
    }

    /**
     *  Method to set ArrayObject offset
     *
     *  This method sets the ArrayObjects value
     *  @access protected
     *  @return void
     */
    protected function setOffset($key, $value){
      $this-&gt;_registry[$key] = $value;
    }

    /**
     *  Check ArrayObject offset
     *
     *  Method to check if an ArrayObject Registry index has a value.
     *  @param string $key Index of Registry to access
     *  @access protected
     *  @return bool
     */
    protected function checkOffset($key){
      if(isset($this-&gt;_registry[$key]))
        return true;

      return false;
    }

    /**
     *  Return method
     *
     *  Method to return the value of a Registry index
     *  @access protected
     *  @return mixed Value of Registry index.
     */
    protected function returnOffset($key){
      return $this-&gt;_registry[$key];
    }

    /**
     *  Dump method
     *
     *  Method to dump the contents of the Registry to the screen via print_r
     *  @access public
     *  @return void
     */
    public function dump(){
      print_r($this-&gt;_registry);
    }

  }
</pre>
]]></content:encoded>
			<wfw:commentRss>http://spechal.com/2009/11/16/php-registry-pattern-class-for-php5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP function to validate MySQL UUID or GUID</title>
		<link>http://spechal.com/2009/11/15/php-function-to-validate-mysql-uuid-or-guid/</link>
		<comments>http://spechal.com/2009/11/15/php-function-to-validate-mysql-uuid-or-guid/#comments</comments>
		<pubDate>Sun, 15 Nov 2009 23:59:51 +0000</pubDate>
		<dc:creator>Spechal</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://spechal.com/?p=30</guid>
		<description><![CDATA[
/**
   *  Function to validate a generated GUID / UUID
   *  @param string $guid GUID
   *  @return bool
   */
  function validGUID($guid){
    return preg_match('#^[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}$#', $guid);
  }

]]></description>
			<content:encoded><![CDATA[<pre class="php" name="code">
/**
   *  Function to validate a generated GUID / UUID
   *  @param string $guid GUID
   *  @return bool
   */
  function validGUID($guid){
    return preg_match('#^[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}$#', $guid);
  }
</pre>
]]></content:encoded>
			<wfw:commentRss>http://spechal.com/2009/11/15/php-function-to-validate-mysql-uuid-or-guid/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP function to emulate MySQL UUID</title>
		<link>http://spechal.com/2009/11/15/php-function-to-emulate-mysql-uuid/</link>
		<comments>http://spechal.com/2009/11/15/php-function-to-emulate-mysql-uuid/#comments</comments>
		<pubDate>Sun, 15 Nov 2009 23:58:15 +0000</pubDate>
		<dc:creator>Spechal</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://spechal.com/?p=28</guid>
		<description><![CDATA[
/**
   *  uuid
   *
   *  uuid() simply replicates MySQL's UUID function, which returns a 36
   *  character &#34;random&#34; hash (32 alphanumeric, 4 dashes).
   *  @return string
   */
  function uuid(){
    return sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
     [...]]]></description>
			<content:encoded><![CDATA[<pre class="php" name="code">
/**
   *  uuid
   *
   *  uuid() simply replicates MySQL's UUID function, which returns a 36
   *  character &quot;random&quot; hash (32 alphanumeric, 4 dashes).
   *  @return string
   */
  function uuid(){
    return sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
      mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff),
      mt_rand(0, 0x0fff) | 0x4000,
      mt_rand(0, 0x3fff) | 0x8000,
      mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff));
  }
</pre>
]]></content:encoded>
			<wfw:commentRss>http://spechal.com/2009/11/15/php-function-to-emulate-mysql-uuid/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP function to emulate Excel NormSInv</title>
		<link>http://spechal.com/2009/11/15/php-function-to-emulate-excel-normsinv/</link>
		<comments>http://spechal.com/2009/11/15/php-function-to-emulate-excel-normsinv/#comments</comments>
		<pubDate>Sun, 15 Nov 2009 15:58:56 +0000</pubDate>
		<dc:creator>Spechal</dc:creator>
				<category><![CDATA[Excel]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[emulator]]></category>

		<guid isPermaLink="false">http://spechal.com/?p=14</guid>
		<description><![CDATA[
&#60;?php

function NormSInv($p){
   $a1 = -39.6968302866538; $a2 = 220.946098424521; $a3 = -275.928510446969;
   $a4 = 138.357751867269; $a5 = -30.6647980661472; $a6 = 2.50662827745924;
   $b1 = -54.4760987982241; $b2 = 161.585836858041; $b3 = -155.698979859887;
   $b4 = 66.8013118877197; $b5 = -13.2806815528857; $c1 = -7.78489400243029E-03;
   $c2 = -0.322396458041136; $c3 = -2.40075827716184, $c4 [...]]]></description>
			<content:encoded><![CDATA[<pre class="php" name="code">
&lt;?php

function NormSInv($p){
   $a1 = -39.6968302866538; $a2 = 220.946098424521; $a3 = -275.928510446969;
   $a4 = 138.357751867269; $a5 = -30.6647980661472; $a6 = 2.50662827745924;
   $b1 = -54.4760987982241; $b2 = 161.585836858041; $b3 = -155.698979859887;
   $b4 = 66.8013118877197; $b5 = -13.2806815528857; $c1 = -7.78489400243029E-03;
   $c2 = -0.322396458041136; $c3 = -2.40075827716184, $c4 = -2.54973253934373;
   $c5 = 4.37466414146497; $c6 = 2.93816398269878; $d1 = 7.78469570904146E-03
   $d2 = 0.32246712907004; $d3 = 2.445134137143; $d4 = 3.75440866190742;
   $p_low = 0.02425; $p_high = 1 - $p_low;
   $q = 0.0; $r = 0.0;
   if($p &lt; 0 || $p &gt; 1){
      throw new Exception(&quot;NormSInv: Argument out of range.&quot;);
   } else if($p &lt; $p_low){
      $q = pow(-2 * log($p), 2);
      $NormSInv = ((((($c1 * $q + $c2) * $q + $c3) * $q + $c4) * $q + $c5) * $q + $c6) /
         (((($d1 * $q + $d2) * $q + $d3) * $q + $d4) * $q + 1);
    } else if($p &lt;= $p_high){
      $q = $p - 0.5; $r = $q * $q;
      $NormSInv = ((((($a1 * $r + $a2) * $r + $a3) * $r + $a4) * $r + $a5) * $r + $a6) * $q /
         ((((($b1 * $r + $b2) * $r + $b3) * $r + $b4) * $r + $b5) * $r + 1);
    } else {
      $q = pow(-2 * log(1 - $p), 2);
      $NormSInv = -((((($c1 * $q + $c2) * $q + $c3) * $q + $c4) * $q + $c5) * $q + $c6) /
         (((($d1 * $q + $d2) * $q + $d3) * $q + $d4) * $q + 1);
    }
    return $NormSInv;
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://spechal.com/2009/11/15/php-function-to-emulate-excel-normsinv/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP Beale Cipher Decoder</title>
		<link>http://spechal.com/2009/11/14/php-beale-cipher-decoder/</link>
		<comments>http://spechal.com/2009/11/14/php-beale-cipher-decoder/#comments</comments>
		<pubDate>Sat, 14 Nov 2009 23:00:17 +0000</pubDate>
		<dc:creator>Spechal</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Treasure Hunting]]></category>
		<category><![CDATA[cipher]]></category>
		<category><![CDATA[decoder]]></category>

		<guid isPermaLink="false">http://spechal.com/?p=10</guid>
		<description><![CDATA[Treasure hunting has always been somewhat of an interest of mine and with my programming skills I decided to create a Beale cipher decoder using PHP.  If you aren&#8217;t aware of the Beale cipher or the Beale story, head on over to Wikipedia and check it out.  It&#8217;s pretty interesting stuff.  Who [...]]]></description>
			<content:encoded><![CDATA[<p>Treasure hunting has always been somewhat of an interest of mine and with my programming skills I decided to create a Beale cipher decoder using PHP.  If you aren&#8217;t aware of the Beale cipher or the Beale story, head on over to <a href="http://en.wikipedia.org/wiki/Beale_ciphers">Wikipedia</a> and check it out.  It&#8217;s pretty interesting stuff.  Who knows if it has every really been found.</p>
<p>You can use the code below to input text and get the possible decoded instructions of where the treasure can be found!</p>
<pre class="php" name="code">&lt;?php
    class Beale {
        /**
        * @copyright 2009 Travis Crowder
        * @license Published under the MIT License
        * @uses
        * $class = new Beale(&quot;They're over here!&quot;, true, true);
        * echo $class=&gt;decipher(1);
        * The above code would remove all punctuation and whitespace
        * characters and use the 2nd cipher in the list
        *
        * $class = new Beale(&quot;They're over here!&quot;, false, true);
        * echo $class=&gt;decipher(0);
        * The above code would remove all punctuation, leaving whitespace
        * characters and use the 1st cipher in the list
        *
        * $class = new Beale(&quot;They're over here!&quot;);
        * echo $class=&gt;decipher(0);
        * The above code would use the 1st cipher in the list,
        * while leaving all whitespace and punctuation characters in place
        */

        /**
        * Ciphers
        *
        * @access protected
        * @var array $_ciphers
        * Contains the ciphers in an array
        */
		protected $_ciphers = array(
            array(
                71, 194, 38, 1701, 89, 76, 11, 83, 1629, 48, 94, 63, 132, 16, 111,
                95, 84, 341, 975,14, 40, 64, 27, 81, 139, 213, 63, 90, 1120, 8, 15,
                3, 126, 2018, 40, 74, 758, 485,604, 230, 436, 664, 582, 150, 251,
                284, 308, 231, 124, 211, 486, 225, 401, 370,11, 101, 305, 139, 189,
                17, 33, 88, 208, 193, 145, 1, 94, 73, 416, 918, 263, 28, 500,538,
                356, 117, 136, 219, 27, 176, 130, 10, 460, 25, 485, 18, 436, 65,
                84, 200, 283,118, 320, 138, 36, 416, 280, 15, 71, 224, 961, 44, 16,
                401, 39, 88, 61, 304, 12, 21,24, 283, 134, 92, 63, 246, 486, 682,
                7, 219, 184, 360, 780, 18, 64, 463, 474, 131,160, 79, 73, 440, 95,
                18, 64, 581, 34, 69, 128, 367, 460, 17, 81, 12, 103, 820, 62,116,
                97, 103, 862, 70, 60, 1317, 471, 540, 208, 121, 890, 346, 36, 150,
                59, 568,614, 13, 120, 63, 219, 812, 2160, 1780, 99, 35, 18, 21,
                136, 872, 15, 28, 170, 88, 4,30, 44, 112, 18, 147, 436, 195, 320,
                37, 122, 113, 6, 140, 8, 120, 305, 42, 58, 461,44, 106, 301, 13,
                408, 680, 93, 86, 116, 530, 82, 568, 9, 102, 38, 416, 89, 71, 216,
                728, 965, 818, 2, 38, 121, 195, 14, 326, 148, 234, 18, 55, 131,
                234, 361, 824, 5,81, 623, 48, 961, 19, 26, 33, 10, 1101, 365, 92,
                88, 181, 275, 346, 201, 206, 86,36, 219, 324, 829, 840, 64, 326,
                19, 48, 122, 85, 216, 284, 919, 861, 326, 985,233, 64, 68, 232,
                431, 960, 50, 29, 81, 216, 321, 603, 14, 612, 81, 360, 36, 51, 62,
                194, 78, 60, 200, 314, 676, 112, 4, 28, 18, 61, 136, 247, 819, 921,
                1060, 464, 895,10, 6, 66, 119, 38, 41, 49, 602, 423, 962, 302, 294,
                875, 78, 14, 23, 111, 109, 62,31, 501, 823, 216, 280, 34, 24, 150,
                1000, 162, 286, 19, 21, 17, 340, 19, 242, 31,86, 234, 140, 607,
                115, 33, 191, 67, 104, 86, 52, 88, 16, 80, 121, 67, 95, 122, 216,
                548, 96, 11, 201, 77, 364, 218, 65, 667, 890, 236, 154, 211, 10,
                98, 34, 119, 56,216, 119, 71, 218, 1164, 1496, 1817, 51, 39, 210,
                36, 3, 19, 540, 232, 22, 141, 617,84, 290, 80, 46, 207, 411, 150,
                29, 38, 46, 172, 85, 194, 39, 261, 543, 897, 624, 18,212, 416, 127,
                931, 19, 4, 63, 96, 12, 101, 418, 16, 140, 230, 460, 538, 19, 27,
                88,612, 1431, 90, 716, 275, 74, 83, 11, 426, 89, 72, 84, 1300,
                1706, 814, 221, 132,40, 102, 34, 868, 975, 1101, 84, 16, 79, 23,
                16, 81, 122, 324, 403, 912, 227, 936,447, 55, 86, 34, 43, 212, 107,
                96, 314, 264, 1065, 323, 428, 601, 203, 124, 95, 216,814, 2906,
                654, 820, 2, 301, 112, 176, 213, 71, 87, 96, 202, 35, 10, 2, 41,
                17, 84,221, 736, 820, 214, 11, 60, 760
            ),
            array(
               115, 73, 24, 807, 37, 52, 49, 17, 31, 62, 647, 22, 7, 15, 140, 47,
               29, 107, 79, 84, 56, 239, 10, 26, 811, 5, 196, 308, 85, 52, 160,
               136, 59, 211, 36, 9, 46, 316, 554, 122, 106, 95, 53, 58, 2, 42, 7,
               35, 122, 53, 31, 82, 77, 250, 196, 56, 96, 118, 71, 140, 287, 28,
               353, 37, 1005, 65, 147, 807, 24, 3, 8, 12, 47, 43, 59, 807, 45, 316,
               101, 41, 78, 154, 1005, 122, 138, 191, 16, 77, 49, 102, 57, 72, 34,
               73, 85, 35, 371, 59, 196, 81, 92, 191, 106, 273, 60, 394, 620, 270,
               220, 106, 388, 287, 63, 3, 191, 122, 43,  234, 400, 106, 290, 314,
               47, 48, 81, 96, 26, 115, 92, 158, 191, 110, 77, 85, 197, 46, 10,
               113, 140, 353, 48, 120, 106, 2, 607, 61, 420, 811, 29, 125, 14, 20,
               37, 105, 28, 248, 16, 159, 7, 35, 19, 301, 125, 110, 486, 287, 98,
               117, 511, 62, 51, 220, 37, 113, 140, 807, 138, 540, 8, 44, 287, 388,
               117, 18, 79, 344, 34, 20, 59, 511, 548, 107, 603, 220, 7, 66, 154,
               41, 20, 50, 6, 575, 122, 154, 248, 110, 61, 52, 33, 30, 5, 38, 8,
               14, 84, 57, 540, 217, 115, 71, 29, 84, 63, 43, 131, 29, 138, 47, 73,
               239, 540, 52, 53, 79, 118, 51, 44, 63, 196, 12, 239, 112, 3, 49, 79,
               353, 105, 56, 371, 557, 211, 515, 125, 360, 133, 143, 101, 15, 284,
               540, 252, 14, 205, 140, 344, 26, 811, 138, 115, 48, 73, 34, 205,
               316, 607, 63, 220, 7, 52, 150, 44, 52, 16, 40, 37, 158, 807, 37,
               121, 12, 95, 10, 15, 35, 12, 131, 62, 115, 102, 807, 49, 53, 135,
               138, 30, 31, 62, 67, 41,  85, 63, 10, 106, 807, 138, 8, 113, 20, 32,
               33, 37, 353, 287, 140, 47, 85, 50, 37, 49, 47, 64, 6, 7, 71, 33, 4,
               43, 47, 63, 1, 27, 600, 208, 230, 15, 191, 246, 85, 94, 511, 2270,
               20, 39, 7, 33, 44, 22, 40, 7, 10, 3, 811, 106, 44, 486, 230, 353,
               211, 200, 31, 10, 38, 140, 297, 61, 603, 320, 302, 666, 287, 2, 44,
               33, 32, 511, 548, 10, 6, 250, 557, 246, 53, 37, 52, 83, 47, 320, 38,
               33, 807, 7, 44, 30, 31, 250, 10, 15, 35, 106, 160, 113, 31, 102,
               406, 230, 540, 320, 29, 66, 33, 101, 807, 138, 301, 316, 353, 320,
               220, 37, 52, 28, 540, 320, 33, 8, 48, 107, 50, 811, 7, 2, 113, 73,
               16, 125, 11, 110, 67, 102, 807, 33, 59, 81, 158, 38, 43, 581, 138,
               19, 85, 400, 38, 43, 77, 14, 27, 8, 47, 138, 63, 140, 44, 35, 22,
               177, 106, 250, 314, 217, 2, 10, 7, 1005, 4, 20, 25, 44, 48, 7, 26,
               46, 110, 230, 807, 191, 34, 112, 147, 44, 110, 121, 125, 96, 41, 51,
               50, 140, 56, 47, 152, 540, 63, 807, 28, 42, 250, 138, 582, 98, 643,
               32, 107, 140, 112, 26, 85, 138, 540, 53, 20, 125, 371, 38, 36, 10,
               52, 118, 136, 102, 420, 150, 112, 71, 14, 20, 7, 24, 18, 12, 807,
               37, 67, 110, 62, 33, 21, 95, 220, 511, 102, 811, 30, 83, 84, 305,
               620, 15, 2, 108, 220, 106, 353, 105, 106, 60, 275, 72, 8, 50, 205,
               185, 112, 125, 540, 65, 106, 807, 188, 96, 110, 16, 73, 33, 807,
               150, 409, 400, 50, 154, 285, 96, 106, 316, 270, 205, 101, 811, 400,
               8, 44, 37, 52, 40, 241, 34, 205, 38, 16, 46, 47, 85, 24, 44, 15, 64,
               73, 138, 807, 85, 78, 110, 33, 420, 505, 53, 37, 38, 22, 31, 10,
               110, 106, 101, 140, 15, 38, 3, 5, 44, 7, 98, 287, 135, 150, 96, 33,
               84, 125, 807, 191, 96, 511, 118, 440, 370, 643, 466, 106, 41, 107,
               603, 220, 275, 30, 150, 105, 49, 53, 287, 250, 208, 134, 7, 53, 12,
               47, 85, 63, 138, 110, 21, 112, 140, 485, 486, 505, 14, 73, 84, 575,
               1005, 150, 200, 16, 42, 5, 4, 25, 42, 8, 16, 811, 125, 160, 32, 205,
               603, 807, 81, 96, 405, 41, 600, 136, 14, 20, 28, 26, 353, 302, 246,
               8, 131, 160, 140, 84, 440, 42, 16, 811, 40, 67, 101, 102, 194, 138,
               205, 51, 63, 241, 540, 122, 8, 10, 63, 140, 47, 48, 140, 288
              ),
            array(
                317, 8, 92, 73, 112, 89, 67, 318, 28, 96, 107, 41, 631, 78, 146,
                397, 118, 98, 114, 246, 348, 116, 74, 88, 12, 65, 32, 14, 81, 19,
                76, 121, 216, 85, 33, 66, 15, 108, 68, 77, 43, 24, 122, 96, 117, 36,
                211, 301, 15, 44, 11, 46, 89, 18, 136, 68, 317, 28, 90, 82, 304, 71,
                43, 221, 198, 176, 310, 319, 81, 99, 264, 380, 56, 37, 319, 2, 44,
                53, 28, 44, 75, 98, 102, 37, 85, 107, 117, 64, 88, 136, 48, 154, 99,
                175, 89, 315, 326, 78, 96, 214, 218, 311, 43, 89, 51, 90, 75, 128,
                96, 33, 28, 103, 84, 65, 26, 41, 246, 84, 270, 98, 116, 32, 59, 74,
                66, 69, 240, 15, 8, 121, 20, 77, 89, 31, 11, 106, 81, 191, 224, 328,
                18, 75, 52, 82, 117, 201, 39, 23, 217, 27, 21, 84, 35, 54, 109, 128,
                49, 77, 88, 1, 81, 217, 64, 55, 83, 116, 251, 269, 311, 96, 54, 32,
                120, 18, 132, 102, 219, 211, 84, 150, 219, 275, 312, 64, 10, 106,
                87, 75, 47, 21, 29, 37, 81, 44, 18, 126, 115, 132, 160, 181, 203,
                76, 81, 299, 314, 337, 351, 96, 11, 28, 97, 318, 238, 106, 24, 93,
                3, 19, 17, 26, 60, 73, 88, 14, 126, 138, 234, 286, 297, 321, 365,
                264, 19, 22, 84, 56, 107, 98, 123, 111, 214, 136, 7, 33, 45, 40, 13,
                28, 46, 42, 107, 196, 227, 344, 198, 203, 247, 116, 19, 8, 212, 230,
                31, 6, 328, 65, 48, 52, 59, 41, 122, 33, 117, 11, 18, 25, 71, 36,
                45, 83, 76, 89, 92, 31, 65, 70, 83, 96, 27, 33, 44, 50, 61, 24, 112,
                136, 149, 176, 180, 194, 143, 171, 205, 296, 87, 12, 44, 51, 89, 98,
                34, 41, 208, 173, 66, 9, 35, 16, 95, 8, 113, 175, 90, 56, 203, 19,
                177, 183, 206, 157, 200, 218, 260, 291, 305, 618, 951, 320, 18, 124,
                78, 65, 19, 32, 124, 48, 53, 57, 84, 96, 207, 244, 66, 82, 119, 71,
                11, 86, 77, 213, 54, 82, 316, 245, 303, 86, 97, 106, 212, 18, 37,
                15, 81, 89, 16, 7, 81, 39, 96, 14, 43, 216, 118, 29, 55, 109, 136,
                172, 213, 64, 8, 227, 304, 611, 221, 364, 819, 375, 128, 296, 1, 18,
                53, 76, 10, 15, 23, 19, 71, 84, 120, 134, 66, 73, 89, 96, 230, 48,
                77, 26, 101, 127, 936, 218, 439, 178, 171, 61, 226, 313, 215, 102,
                18, 167, 262, 114, 218, 66, 59, 48, 27, 19, 13, 82, 48, 162, 119,
                34, 127, 139, 34, 128, 129, 74, 63, 120, 11, 54, 61, 73, 92, 180,
                66, 75, 101, 124, 265, 89, 96, 126, 274, 896, 917, 434, 461, 235,
                890, 312, 413, 328, 381, 96, 105, 217, 66, 118, 22, 77, 64, 42, 12,
                7, 55, 24, 83, 67, 97, 109, 121, 135, 181, 203, 219, 228, 256, 21,
                34, 77, 319, 374, 382, 675, 684, 717, 864, 203, 4, 18, 92, 16, 63,
                82, 22, 46, 55, 69, 74, 112, 134, 186, 175, 119, 213, 416, 312, 343,
                264, 119, 186, 218, 343, 417, 845, 951, 124, 209, 49, 617, 856, 924,
                936, 72, 19, 28, 11, 35, 42, 40, 66, 85, 94, 112, 65, 82, 115, 119,
                236, 244, 186, 172, 112, 85, 6, 56, 38, 44, 85, 72, 32, 47, 73, 96,
                124, 217, 314, 319, 221, 644, 817, 821, 934, 922, 416, 975, 10, 22,
                18, 46, 137, 181, 101, 39, 86, 103, 116, 138, 164, 212, 218, 296,
                815, 380, 412, 460, 495, 675, 820, 952
            )
        );

		protected $_input = NULL;
		protected $_whitespace = FALSE;

		/**
        * Constructor
        *
        * @var string $Input Input to decipher
        * @var bool $whitespace Remove whitespace characters (\n, \t, \x20)
        * @var bool $parse Whether or not to run the character stripper ... must be True for whitespace to matter
        */
        public function __construct($input = NULL, $whitespace = FALSE, $parse = FALSE){
			$this-&gt;setWhitespace($whitespace);
			$this-&gt;setInput($input, $parse);
			$this-&gt;tokentize();
		}

		public function __destruct(){ }

		public function __clone(){ }

		/**
		 * Method to return the number of cipher elements in a cipher
		 *
		 * @param int $index
		 * @return count
		 */
		public function cipherSize($index){
			return count($this-&gt;_ciphers[$index]);
		}

		/**
		 * Method to return the largest element in a cipher
		 *
		 * @param int $index
		 * @return int
		 */
		public function maxCipher($index){
		  $max = 0;
		  foreach($this-&gt;_ciphers[$index] as $v)
		    if($v &gt; $max) $max = $v;
		  return $max;
		}

		/**
		 * Method to return the number of input elements
		 *
		 * @return int
		 */
		protected function inputSize(){
			return count($this-&gt;_input);
		}

		/**
		 * Method to remove punctuation and other elements
		 *
		 * @return void
		 */
		protected function inputClean(){
			$tokens = array(&quot;'&quot;, '&quot;', ',', '.', '!', '.', '(', ')', '*', '&amp;', '^', '%',
						'$', '#', '@', '`', '~', '-', '_', '=', '+', ';', '&lt;', '&gt;',
						'/', '?', '\\', '|', '[', ']', '{', '}'
					);
            // if whitespace, add whitespace characters to the tokens
			if($this-&gt;_whitespace){ $tokens[] = &quot; &quot;; $tokens[] = &quot;\t&quot;; $tokens[] = &quot;\n&quot;; }

			return str_replace($tokens,
					'',
					$this-&gt;_input
				);
		}

		/**
		 * Method to convert string to array
		 *
		 * @return void
		 */
		protected function tokentize(){
		  $this-&gt;_input = explode(&quot; &quot;, $this-&gt;inputClean($this-&gt;_input));
		}

		/**
		 * Method to set if to strip whitespace or not
		 *
		 * @param unknown_type $bool
		 */
		public function setWhitespace($bool){
			$this-&gt;_whitespace = ($bool) ? TRUE : FALSE;
		}

		/**
		 * Method to put the input into a variable
		 *
		 * @param string $input
		 * @param bool $parse
		 * @return void
		 */
		public function setInput($input, $parse = FALSE){
			$this-&gt;_input = ($parse) ? $this-&gt;inputClean($input) : $input;
		}

		/**
		 * Method to run the decryption
		 *
		 * @param int $key
		 * @return string
		 */
		public function decipher($key){
		  $return = NULL;
		  foreach($this-&gt;_ciphers[$key] as $k =&gt; $v){
		    $return .= $this-&gt;_input[$v][0];
		  }
		  return $return;
		}
	}</pre>
]]></content:encoded>
			<wfw:commentRss>http://spechal.com/2009/11/14/php-beale-cipher-decoder/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
