[2007-06-01] Drohbrief Creator 1.0.1.
Link zum Drohbrief Creator 2.0 (erweiterte Version)
Wiedermal eine kleine PHP-Fingerübung: Diesmal ist es ein script, dass einen Text in einen handschriftlichen Text verwandeln soll. Etwa so:





















































































Dazu braucht es zwei Dinge:
- Es braucht eine Font die die Typen A-Z und a-z inkl. üÜöÖäÄ, die Zahlen 0-9 und die Zeichen ()-:;,.! und ?, sowie ein Default-Zeichen für fehlende Zeichen in vierfacher Ausgabe beinhaltet. (alles .jpg)
- Und es braucht die PHP-Funktion imageset(), die die jeweiligen Buchstaben durch eines der vier entsprechenden Typen-Bilder ersetzt.
Die Font
- Der Buchstabe A/a wird gebildet durch je vier Versionen für Gross-und Kleinschreibung plus je vier für die Umlaute:
A0.jpg
A1.jpg
A2.jpg
A3.jpg
A0lc.jpg (lc für lowercase)
A1lc.jpg
A2lc.jpg
A3lc.jpg
Ä0.jpg
Ä1.jpg
Ä2.jpg
Ä3.jpg
ä0lc.jpg
ä1lc.jpg
usw. - Typen für Sonderzeichen werden grundsätzlich auch von 0-3 nummeriert und haben folgende Namenskonventionen.
komma0.jpg
punkt1.jpg
space2.jpg
ausruf3.jpg
frage0.jpg
error1.jpg
weitere: semi0.jpg, doppel1.jpg, minus2.jpg, klammerauf3.jpg, klammerzu0.jpg, affe1.jpg
Die Funktion imageset()
... analysiert einen Text Zeichen für Zeichen mittels einer Unzahl von sog. Regulären Ausdrücken und ersetzt die Zeichen durch Bilder. Die Bildwahl geschieht mit Hilfe des Modulo 4 des Zählers $i ($i: Position des Buchstaben im Text; Modulo 4: Der Rest bei einer Division durch 4). Damit wird sicher gestellt, dass die gleiche Unterart eines Buchstaben mindestens durch drei andere Buchstaben getrennt wird.
Tablulatoren \t und Zeilenumbrüche \n & \r werden durch ihre HTML-Entsprechungen ersetzt.
HTML-Tags werden nicht geändert sondern als solche verarbeitet.
function imageset($text)
{
/* Zähler 0-3 */
/* Flag für HTML-Tags */
$flag=0;
/* Textumbrüche und Tabs durch html Tags ersetzen*/
$text = str_replace(array("\r\n", "\r", "\n"), "
", $text);
$text = str_replace("\t", " ", $text);
$stop = strlen($text);
for ($i=0; $i<$stop;$i++)
{
if ($text{$i}=='<') {$flag=1;}
if ($flag==1) {echo $text{$i};}
else{
echo "<";
echo "img src=./font/";
if (preg_match("/[a-züäö]/", $text{$i}))
{
echo strtoupper($text{$i}).($i % 4)."lc.jpg";
}
else if (preg_match("/[A-Z0-9ÜÄÖ]/", $text{$i}))
{
echo $text{$i}.($i % 4).".jpg";
}
else if ($text{$i}== " ")
{
echo "space".($i % 4).".jpg";
}
else if ($text{$i}=="!")
{
echo "ausruf".($i % 4).".jpg";
}
else if ($text{$i}==",")
{
echo "komma".($i % 4).".jpg";
}
else if ($text{$i}==".")
{
echo "punkt".($i % 4).".jpg";
}
else if ($text{$i}=="?")
{
echo "frage".($i % 4).".jpg";
}
else if ($text{$i}=='-')
{
echo "minus".($i % 4).".jpg";
}
else if ($text{$i}==':')
{
echo "doppel".($i % 4).".jpg";
}
else if ($text{$i}==';')
{
echo "semi".($i % 4).".jpg";
}
else if ($text{$i}=='(')
{
echo "klammerauf".($i % 4).".jpg";
}
else if ($text{$i}==')')
{
echo "klammerzu".($i % 4).".jpg";
}
else if ($text{$i}=='@')
{
echo "affe".($i % 4).".jpg";
}
else
{echo "error".($i % 4).".jpg"; }
echo ">";
}
if ($text{$i}=='>') {$flag=0;}
}
}