Codierung Emailadressen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Hi!
    Die Frage, die ich mir stelle ist, wie man am einfachsten und schnellsten Emails und andere Strings codiert in das Format &#Zahl;, wobei die Zahl der Nummer des Zeichens in der Zeichensatztabelle entspricht.
    Das macht die Emailadresse nämlich sicherer davor von Spambots erfasst zu werden.
    Ich habe mich gefragt, ob es dafür schon eine Funktion in PHP gibt.
    Ansonsten - was denkt ihr, wäre die geschickteste Lösungsmöglichkeiten? Am blödesten wäre sicherlich einen str_replace befehl für jedes einzelne vorhandene Zeichen. Da hätte man dann ganz schön was zu tun...
    Ansonsten könnte man vielleicht alle Zeichen in ein Array packen und in einer schleife die zeichen durch die codierte version ersetzen. damit hätte man schon ein bisschne was gespart. trotzdem müsste man aber immer noch alle existierenden zeichen in die php-datei schreiben, was immer noch ne menge arbeit wäre.
  • Bei der PHP-Funktionsreferenz von ord() gab es folgenden Kommentar:
    In the notes for bin2hex, there is a function for hex encoding an email address in a "mailto" tag to avoid spam bots. The hex encoding works in the anchor tag itself, but not for the link text. To display the email address as the link text, you can use the function below to ascii encode the address and keep the spam bots at bay.

    Quellcode

    1. function ascii_encode($string) {
    2. for ($i=0; $i < strlen($string); $i++) {
    3. $encoded .= '&#'.ord(substr($string,$i)).';';
    4. }
    5. return $encoded;
    6. }


    hm, das scheint genau das zu sein, was ich gesucht hab.
  • Wenn du .= benutzt, sollte die Variable vorher deklariert worden sein. Die Variable $strlen würde ich benutzen, damit du bei längeren Strings keine Performance Probleme bekommst. Ist halt ungünstig, wenn er 100x die gleiche Stringlänge ausgibt. Ansonsten würde ich statt substr(); die andere Schreibweise benutzen. Die ist ein bisschen schneller.
    substr($string,$begin,1) entspricht $string{$begin}.
  • Wenn du .= benutzt, sollte die Variable vorher deklariert worden sein.

    wieso muss? kann...
    Die Variable $strlen würde ich benutzen, damit du bei längeren Strings keine Performance Probleme bekommst. Ist halt ungünstig, wenn er 100x die gleiche Stringlänge ausgibt.

    ich weiß ja nicht, wie php so eine for-schleife berechnet, aber ich denke mal, die schleifenbedingung wird einmal berechnet und dann abgespeichert. insofern machts keinen unterschied.
  • <!--QuoteBegin-wulfgang+May 9 2004, 02:39 PM--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>QUOTE (wulfgang @ May 9 2004, 02:39 PM)</td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->
    Wenn du .= benutzt, sollte die Variable vorher deklariert worden sein.

    wieso muss? kann...
    Die Variable $strlen würde ich benutzen, damit du bei längeren Strings keine Performance Probleme bekommst. Ist halt ungünstig, wenn er 100x die gleiche Stringlänge ausgibt.

    ich weiß ja nicht, wie php so eine for-schleife berechnet, aber ich denke mal, die schleifenbedingung wird einmal berechnet und dann abgespeichert. insofern machts keinen unterschied. [/quote]
    Sollte, nicht muss oder kann.

    Quellcode

    1. error_reporting(E_ALL);

    Schreib das mal oben hin, dann wirste sehen, dass er dir eine Notice ausspuckt.

    Zu der Performance:
    Nein, es wird nicht abgespeichert. Der erste Parameter wird 1-malig ausgeführt. Der Rest solange bis die for-Anweisung nicht mehr zutrifft.
    Wenn du es nicht glaubst, dann vergewissere dich selbst. Gibt genug Benchmark-Tools.