<?php
/*
  I'd like to point out that I'm not especially proud of this code. It's OK to
  play with, though.
*/

if ($clear) {
    
$text '';
    }
elseif (
$text) {
    
$text stripslashes($text);
    
$poetry nl2br(htmlspecialchars(poetize($text)));
    
$text htmlspecialchars($text);
    }
else {
    
$text "now is the time for all good men to come to the aid of the party.";
    }

function 
poetize($text$settings=array()) {
    
mt_srand((double)microtime()*1000000);
    
extract($settings);    // maybe add something later so people can specify $maxlinelen etc.
    
$dontend = array('and''the''to''in');

    
$words preg_split("/ /"preg_replace("/\s+/"" "trim($text)));
    
$numwords count($words);
    if (!
$maxlinelen)
        
$maxlinelen $numwords 30 15;

    foreach (
$words as $word) {
        if (!
$word)
            continue;

        
$poetry .= "$word";

        if (
preg_match('/^[("]/'$word)) {    // very simple, will break with nested parens
            
$sincelast 0;
            
$donothing 1;
            }

        if (
$donothing) {
            
$sincelast++;
            }

        if (
preg_match('/[")]$/'$word)) {
            
$poetry .= ".\n\n";
            
$donothing 0;
            }

        if (!
$donothing) {
            if (!
mt_rand(05) && !preg_match("/[:;,.]$/"$word)) {
                if (!
mt_rand(03)) $poetry .= ",";
                
$poetry .= "\n";
                
$sincelast 0;
                }
            elseif (!
mt_rand(03) && !in_array($word$dontend)) {
                if (
preg_match("/[:;.]/"$word)) $poetry .= "\n\n";
                
$sincelast 0;
                }
            else {
                
$sincelast++;
                }
            }
        if (
$sincelast $maxlinelen) {
            
$poetry .= "\n";
            }

        
$poetry .= " ";
        }

    return 
trim($poetry);
    }
?>
<html>

<head>

<meta name="description" content="a poetry generator. that nobody thinks is funny, except me.">
<meta name="keywords" content="poetry, generator, poetry generator, bad humour">
<? include 'metatags.inc'?>

<title>
poetry generator
</title>

<?=$style_head?>
</head>

<body bgcolor=#99CC99>

<center>

<form action="<?=$PHP_SELF?>" method=post>
<p><table cellpadding=3 cellspacing=1 width=80% bgcolor="#AAAAAA">

<tr bgcolor="#DDDDDD"><td colspan=2 align=center>
<br>
put some random text into the box, click generate, <i>et voil&agrave;</i>: <b>poetry</b>.

<br><br>
and &mdash; bonus! &mdash; just <a href="<?=$PHP_SELF?>">reload</a> for more! poetry in motion: with airbags.

<br><br>
</td></tr>

<tr bgcolor=#EEEEEE>
<td align=right valign=top>enter&nbsp;some&nbsp;text:&nbsp;</td>
<td width="100%"><textarea style="width: 100%;" name=text rows=8 cols=80><?=$text?></textarea></td>
</tr>

<tr><td align=center colspan=2 bgcolor=#EEEEEE>
    <table cellpadding=0 cellspacing=0>

    <tr>
    <td><input type=submit name="clear" value="clear the box"></td>
    <td>&nbsp;&nbsp;&nbsp;&nbsp;or&nbsp;&nbsp;&nbsp;&nbsp;</td>
    <td><input type=submit value="generate poem"></td>
    </tr>

    </table>
</td></tr>

<? if ($poetry) { ?>
</tr><td colspan=2 bgcolor=white align=center>
<br>

<table bgcolor=black cellpadding=7 width=95%>
<tr><td bgcolor=white>
<tt><?=$poetry?></tt>
</td></tr>
</table>

<br>
</td></tr>
<? ?>

</table>
</form>

<p>[ <a href=poetry.phps>source</a> | <a href="../">home</a> ]

</body>

</html>