php5

PHP-CLi, The Flip Side – coin flipper

Below is a simple CLi coin flip I created to help me decide on what to do for lunch.. Don’t forget to change the mode of the file:

$ chmod +x flipcoin

Usage:

$ ./flipcoin # Flips 3 times by default
$ ./flipcoin 1234 # Flips 1234 times
#!/usr/bin/php
<?php
/*
Determine the number of flips.
This assumes you won't be putting in values <=0 
*/
$lim = (array_key_exists(1,$argv)) ? $argv[1] : 3;
 
/*
Set counters, $heads, $tails and $c(ount)
*/
$heads=$tails=$c=0;
for($i=0;$i<$lim;$i++) {
        $c++;
        $int = rand(1,1000);
/*
If $int modulo 2 leaves a remainder, call heads;
else call tails
*/
        if ( $int % 2 ) { echo '!'; $heads++; }
        else { echo '.'; $tails++; }
        if( ($c % 50) == 0 ) { echo "\n"; }
}
/*
Echo the winner, if there was one
*/
echo "\nAfter {$lim} flips: {$heads} Heads(!) and {$tails} Tails(.)\n"
.( ($heads > $tails) ? 'Heads' : ( ($tails == $heads) ? 'Nobody' : 'Tails' ) )
." wins.\n";
 
/* Check for ties, and break them with one last flip  */
if($tails == $heads) {
$int = rand(1,1000);
echo "\n".'Single Tie Breaker Flip:  ';
if ( $int % 2 ) { echo 'Heads Wins.'; }
else { echo 'Tails Wins'; }
echo "\n";
}
exit(0);
?>

It’s nothing crazy, but it is fun to watch 100,000,000 coins being flipped..

After 100000000 flips: 50005803 Heads(!) and 49994197 Tails(.)
Heads wins.

Enjoy!

By Mike on February 2, 2014 | PHP
Tags: , ,

Before you ob_start(), don’t forget ob_flush() and ob_end_clean()…

Adding compression to your PHP scripts is as easy as:

<?php
// start at the beginning of your output.
ob_start();
 
/*
//////////////////////////////////////////////////
output will be here, whatever it is.
/////////////////////////////////////////////////
*/
 
// and after your output.
ob_flush();
ob_end_clean();
?>

No, really. It is that easy.

By Mike on September 9, 2011 | PHP, Tutorials
Tags: , , ,

PHP Snippet – Article Spinner

I was bored the other day so I made a very simple article spinner…

Takes a sentence like this:
The {quick|fast} {brown|black} {fox|dog|cat} jumps {over|above|around} the {lazy|sleepy} {horse|cow|donkey}.

And turns it into something like:
The fast brown cat jumps above the sleepy donkey.

$content = "The {quick|fast} {brown|black} {fox|dog|cat} jumps 
{over|above|around} the {lazy|sleepy} {horse|cow|donkey}.";
function spinaround($content)
{
    preg_match_all('/{(.*)}/sU',$content,$matches);
    foreach ($matches[0] as $k=>$v)
    {
        $string = $matches[1][$k];
        $new = explode('|',$string);
        $new = $new[array_rand($new)];
        $content = str_replace($v,$new,$content);
    }
return $content;
}
echo spinaround($content);

I know what you’re thinking; “But most article spinners can do two levels of spinning!!” Yeah, well, using regex to do so is a bit of a pain, however using square brackets [ ] this is entirely possible, as follows:

Takes this:
The {quick|fast} {brown|black} {fox|[fat|skinny] dog|cat} jumps {over|above [and beyond|and below]|around} the {[overly|somewhat] lazy|sleepy}
{horse|cow|donkey}.

Turns it into:
The fast brown fox jumps above and beyond the overly lazy horse.

$content = "The {quick|fast} {brown|black} {fox|[fat|skinny] dog|cat} jumps 
{over|above [and beyond|and below]|around} the {[overly|somewhat] lazy|sleepy}
{horse|cow|donkey}.";
function spinaround($content)
{
    preg_match_all('/{(.*)}/sU',$content,$matches);
    foreach ($matches[0] as $k=>$v)
    {
        $string = $matches[1][$k];
        if ( preg_match_all('/\[(.*)\]/sU',$string,$stringmatches) )
        {
            foreach ($stringmatches[0] as $l=>$w)
            {
            $new = explode('|',$stringmatches[1][$l]);
            $new = $new[array_rand($new)];
            $string = str_replace($w,$new,$string);
            }
        }
        $new = explode('|',$string);
        $new = $new[array_rand($new)];
        $content = str_replace($v,$new,$content);
    }
return $content;
}
 
echo spinaround($content);

Now I know the standard ‘spinables’ use { } for both sets of spinning, but oh well.

Enjoy.

By Mike on May 27, 2011 | PHP
Tags: , , ,