function in preg_replace() search array aufrufen

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • function in preg_replace() search array aufrufen

    Hallo,

    ich hab eine komplizierte Frage. Ich möchte in einem replaceargument array eine funktion benutzen um werte zu verschlüsseln.

    so in etwa (sind normalerweise mehr suchwerte drin)

    $search = array("'(^|\ |\\n)([a-zA-Z0-9\.\/\-\_]{1,})@([a-zA-Z0-9\.\/\-\_]{1,})'i");

    $makeit = array("\\1<a href=\"mailto:".hex_encode("\\2@\\3")."\">\\2@\\3</a>");

    $eingabe = "ist ein string, verschiedene texte einer HP die aus einer DB stammen.";

    preg_replace($search, $makeit, $eingabe);


    Ich habe halt vor in einem Text nach einer E-Mail Adresse zu suchen und diese in ein "mailto:mail@mail.de" Link zu verwandeln.
    Das klappt auch alles. Nur will ich diesen link verschlüsselt im HTML Code darstellen - die Funktion geht auch.
    Ich kann sogar die Funktion im array aufrufen nur interpretiert er natürlich nur die Zeichen als String und verschlüsselt einfach "\\2@\\3" !!!

    Ich will aber natürlich die werte davon verschlüsseln. Hat einer 'ne Ahnung ob das überhaupt geht? Ich habs auf verschiedene arten versucht.
    Help plz !!! :*(

  • #2
    Mal ne kleine Frage:
    Was bringt das verschlüsseln mit Deine hex_encode Funktion?
    Beantworte nie Threads mit mehr als 15 followups...
    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

    Comment


    • #3
      Re: function in preg_replace() search array aufrufen

      Original geschrieben von fUnk`
      Ich kann sogar die Funktion im array aufrufen nur interpretiert er natürlich nur die Zeichen als String und verschlüsselt einfach "\\2@\\3" !!!
      funzt vllt.
      $makeit = array("\\1<a href=\"mailto:".hex_encode(\\2@\\3)."\">\\2@\\3</a>");
      ?


      btw: es nützt wohl relativ wenig, nur die emailadresse hinter mailto: zu kodieren, wenn im linktext immer noch der klartext steht...
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Comment


      • #4
        function hex_encode ($email_address) {
        $encoded = bin2hex("$email_address");
        $encoded = chunk_split($encoded, 2, '%');
        $encoded = '%' . substr($encoded, 0, strlen($encoded) - 1);
        return $encoded;
        }


        soweit ich das mitbekommen habe durchsuchen die meisten spammbots den HTML Quellcode und wollte daher die email adresse verschlüsseln da dann dort kein string@string.domain zu finden ist sondern nur eine zahlenfolge. Der link auf der seite funzt aber.
        Hat wer ne andere Lösung?

        Comment


        • #5
          hey

          du kannst mit einem weiteren modifier > e < ( fuer eval) bestimmen das eine funktion aufgerufen wird

          bsp.
          Code:
          function foo( $foobar )
          {
            return "<i>".$foobar."</i>";
          }
          $repl = '|\{i\}(.*)\{/i\}|e';
          echo preg_replace( $repl, "foo('\\1')", '{i}ich bin ein kursiver text{/i}' );

          mfg



          // edit
          eckige klammern durch geschweifte ersetzt (die vBulletin posse soll mal vb Code in code tag sperren ; )
          ...mind your brain
          need a free bulletin board:
          JBB - laufendes Board

          Comment

          Working...
          X