Drohbrief Creator 1.0.1.

[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:

  1. 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)
  2. Und es braucht die PHP-Funktion imageset(), die die jeweiligen Buchstaben durch eines der vier entsprechenden Typen-Bilder ersetzt.

Die Font

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;} } }

drupal counter