Christoph Zurnieden: PHP-Lösung

Beitrag lesen

Hallo Zusammen,

Hier meine PHP-Lösung, ohne jedes Mal die gesamte Vergleichs-Schleife durchlaufen zu muessen.
Die Schleifenvariante aus dem Original waere uebrigens effektiver, wenn man die Vergleiche entsprechend der relativen Häufigkeit von Zeichen anordnen wuerde.

Ein switch() wäre übrigens auch nicht verkehrt, funktioniert aber nicht bei sehr alten PHP Versionen.

Aber mal ganz nebenbei:
Warum eigentlich immer so kompliziert?
Hexcode funktioniert doch auch!
Hier also mal ein paar Variationen über das Thema (imagepng() braucht mindestens PHP mit GD-Lib >= 1.6, sollte aber bei den aktuellen Anbietern zutreffen) komplett zum C&P und anpassen.
Lizenz: für so einen Driss gibt's "Public Domain" ;-)

<?php
if (!$mailadress){
echo
"<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="de" xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
<head>
<title>Mailcode</title>
</head>
<body>
<div>
<form name="form1" enctype="multipart/form-data" method="post"
action="mailcode.php">
<h4>Mailadresse</h4>
<input type="text" name="mailadress" size="50" maxlength="1024" />
<form>
</div>
</body>
</html>";
}
else {
$maLength=strlen($mailadress);
if($maLength < 1 || $maLength > 1024) {
 return false; //so natürlich nicht, aber ist ja nur ein Beispiel ;-)
}
for($i=0;$i<$maLength;$i++){
  $hexDump = bin2hex($mailadress{$i});
  $codedAdress .= "&#x$hexDump;";
  if($i==10)$codedAdress .="<br />";
  $encodedAdress .= "&#x$hexDump;";
}
$adressImage=imagecreate(($i*10),20);
$colorBack=imagecolorallocate($adressImage,200,255,200);
$colorFont=imagecolorallocate($adressImage,255,0,0);
imagestring($adressImage,5,5,0,$mailadress,$colorFont);
imagepng($adressImage,"image.png");
//oder wo auch immer PHP Schreibrechte hat.
//Wenn's nicht funktioniert, könnten evt die Leserechte für den Browser fehlen.
//Dieser Fehler hat zumindest mich gerade geärgert ;-)

echo
"<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="de" xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
<head>
<title>Mailcode</title>
</head>
<body>
<div style="border:2px solid #f40000;margin:1ex 0 0 1ex;padding:1ex 1em 1em 1ex;" >
<h4>Originale Mailadresse:</h4>
$mailadress
</div>
<div style="border:2px solid #00f400;margin:1ex 0 0 1ex;padding:1ex 1em 1em 1ex;" >
<h4>Encodierte Mailadresse:</h4>
$codedAdress
</div>
<div style="border:2px solid #0000f4;margin:1ex 0 0 1ex;padding:1ex 1em 1em 1ex;" >
<h4>Darstellungstest:</h4>
$encodedAdress
</div>
<div style="border:2px solid black;margin:1ex 0 0 1ex;padding:1ex 1em 1em 1ex;" >
<h4>Als Bildchen:</h4>
<img src="image.png" />
</div>
</body>
</html>";
}?>

so short

Christoph Zurnieden