Tommi: Regulärer Ausdruck für Links wie in Wikipedia

Hallo,

ich suche einen regulären Ausdruck, der Links so wie in Wikipedia umwandelt:

Aus [[Link]] soll <a href="Link">Link</a> und aus [[Link|Linktext]] soll <a href="Link">Linktext</a> werden.

Habe folgendes probiert, funktioniert aber nicht richtig:
$text = preg_replace("#[[(.+?)|(.+?)]]#is", "<a href="\1">\2</a>", $text);
$text = preg_replace("#[[(.+?)]]#is", "<a href="\1">\1</a>", $text);

Kann mir jemad weiterhelfen?

Danke!
Tommi

  1. Hallo!

    Aus [[Link]] soll <a href="Link">Link</a> und aus [[Link|Linktext]] soll <a href="Link">Linktext</a> werden.

    $string = preg_replace("/[[(.*?)|(.*?)]]/is", "<a href="\1">\2</a>", $string);

    MfG, André Laugks

    --
    L-Andre @ gmx.de
    1. Hallo André,

      Aus [[Link]] soll <a href="Link">Link</a> und aus [[Link|Linktext]] soll <a href="Link">Linktext</a> werden.

      $string = preg_replace("/[[(.*?)|(.*?)]]/is", "<a href="\1">\2</a>", $string);

      ...hm, ja, aber das kollidiert immernoch mit [[Link]] (also ohne Linktext).

      Tommi

      1. gudn tach!

        $string = preg_replace("/[[(.*?)|(.*?)]]/is", "<a href="\1">\2</a>", $string);

        ...hm, ja, aber das kollidiert immernoch mit [[Link]] (also ohne Linktext).

        ich rate mal mit:
        $string1=preg_replace('/[[([^|]]+?)(?:|([^]]+))?]]/e', "'<a href="$1">'.(('$2')?'$2':'$1').'</a>'", $string);

        prost
        seth

        1. Hallo seth,

          ich rate mal mit:
          $string1=preg_replace('/[[([^|]]+?)(?:|([^]]+))?]]/e', "'<a href="$1">'.(('$2')?'$2':'$1').'</a>'", $string);

          Jau, das sieht gut aus, danke!

          Gruß
          Tommi