als link ausgeben

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • als link ausgeben

    Hallo,

    ich habe folgendes Problem. Es gibt ja diese schöne php-funktion, mit der Links in einem Text, der aus einer Datenbank kommt, in anklickbare Links umgewandelt werden:

    function click($contents) {
    $ret = eregi_replace( "([[:alnum:]]+)://([^[:space:]]*)([[:alnum:]#?/&=])", "<a href='\\1://\\2\\3'>\\1://\\2\\3</a>", $contents);
    return($ret);
    }
    $contents = $z["inhalt"];
    $z["inhalt"] = click($contents);

    Das würde ich jetzt gerne so umändern, dass folgendes erkannt und in einen Link umgewandelt wird:
    ##url##url-name##
    also z.B.: ##http://www.google.de##Google##
    soll werden: <a href="http://www.google.de">Google</a>

    Wie geht das? Folgendes funktioniert nicht:

    function click($contents) {
    $ret = eregi_replace( "##([[:alnum:]]+)://([^[:space:]]*)([[:alnum:]#?/&=])##(.*)##", "<a href='\\1://\\2\\3'>\\4</a>", $contents);
    return($ret);
    }

    Bei (.*?) wird übrigens ein Fehler gemeldet.

    Weiß jemand weiter?

    Beste Grüße
    det

  • #2
    hmm,

    versuch mal, des # zum slashen ...

    EDIT:
    und die restlichen metas auch?

    Code:
      $subject = "##http://www.dhudk.de##dhudk.de##";
      echo preg_replace ('/\#\#(.*)\#\#(.*)\#\#/Ui', '<a href="\1">\2</a>', $subject);
    tuts bei mir
    Zuletzt geändert von derHund; 12.05.2004, 21:36.
    Die Zeit hat ihre Kinder längst gefressen

    Kommentar


    • #3
      Genial, das funktioniert, vielen Dank!

      Das Problem ist nur, jetzt wird nicht mehr zwischen Email und URL unterschieden (das hatte ich zur Vereinfachung weggelassen).

      Wie könnte man also die folgende Funktion noch optimieren, dass eine Email-Adresse gesondert erkannt wird?

      function click($contents) {
      $ret = preg_replace ('/\#\#(.*)\#\#(.*)\#\#/Ui', '<a href="\1">\2</a>', $contents);
      $ret = preg_replace ('/\#\#(.*)\#\#(.*)\#\#/Ui', '<a href="mailto:\1">\2</a>', $ret);
      return($ret);
      }

      Grüße, det

      Kommentar


      • #4
        hmm,

        wenn du das mittels ##url##url-name##

        ##http://www.google.de##Google##

        angibts, was hindert dich dran,

        ##mailto:hund@hund.de##Hund##

        zu verwenden?

        sonst:
        ([^@]*) findet alles, was kein @ enthält ...
        Die Zeit hat ihre Kinder längst gefressen

        Kommentar

        Lädt...
        X