PHP Functions: Wiggle, Wobble, Squibble & Swipswap

Leave a comment Standard

Here are a few fun functions for word games, word scrambling and just plain word craziness.

<?php
/***********
* Purpose: move a certain letter to a certain position
* Precondition: word, letter to move, position to move it to
* Postcondition: word has been re-arranged
***********/
function wiggle($word, $letter, $position = 0)
{
 $word = str_replace(" ", "_", $word);

 if ($start = strpos($word, $letter))
 {
 $array = array_merge(str_split(substr($word, 0, $start)), str_split(substr($word, $start+1, strlen($word))));

 for ($i = 0; $i < strlen($word); $i++)
 {
 if ($i != $position)
 $final .= $array[$i];
 else
 $final .= $letter . $array[$i];
 }

 return str_replace("_", " ", $final);
 }
 else
 return; //letter wasn't found
}

/***********
* Purpose: move the letter at a certain position to a new position
* Precondition: word, position to move from, position to move to
* Postcondition: letter has moved from start to end position
***********/
function wobble($word, $start, $position = 0)
{
 $word = str_replace(" ", "_", $word);
 $start -= 1;

 $array = array_merge(str_split(substr($word, 0, $start)), str_split(substr($word, $start+1, strlen($word))));

 for ($i = 0; $i < strlen($word); $i++)
 {
 if ($i != $position)
 $final .= $array[$i];
 else
 $final .= substr($word, $start, 1) . $array[$i];
 }

 return str_replace("_", " ", $final);
}

/***********
* Purpose: move letters from this position and on to the beginning of the word
* Precondition: word, position to start from
* Postcondition: words from start to strlen($word) are not at the beginning of the word
***********/
function jiggle($word, $start)
{
 return substr($word, $start, strlen($word)-$start) . substr($word, 0, $start);
}

/***********
* Purpose: replace all $letters in the word with $replace
* Precondition: word, letter you want replaced, letter to replace it with
* Postcondition: word has been re-arranged
***********/
function swipswap($word, $letter, $replace)
{
 return str_replace($letter, $replace, $word);
}

/***********
* Purpose: every $length move the following $number of letters to the beginning of the word
* Precondition: word, lengh between squiggles, number of letters to move
* Postcondition: word has been re-arranged
***********/
function squiggle($word, $length = 1, $number = 2)
{

 if ($length >= strlen($word))
 $word = strrev($word);
 else
 {

 for ($i = 0; $i < strlen($word); $i++)
 {
 if ($i % $length)
 $word = substr($word, $i, $number) . substr($word, 0, $i) . substr($word, $i+$number, strlen($word));

 } //end for

 }//end else

 return $word;
}

//test it out!
echo wiggle("Hey Johnny 21", "e", 6);
echo "<br/>";
echo wobble("Hey Johnny 21", 3, 6);
echo "<br/>";
echo jiggle("Hey Johnny 21", 3);
echo "<br/>";
echo squiggle("Hey Johnny 21", 2, 2);
echo "<br/>";
echo swipswap("Hey Johnny 21", "n", "d");
?>
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s