als link ausgeben

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

  • 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
    Last edited by derHund; 12-05-2004, 21:36.
    Die Zeit hat ihre Kinder längst gefressen

    Comment


    • #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

      Comment


      • #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

        Comment

        Working...
        X