Alexander Kleinjung: [link]-Adäquat in PHP?

Hallo,

hier im Forum kann man ja mit "(link)" einen Link definieren.
In PHP sollte das wohl über die sog. regulären Ausdrücke möglich sein,
aber ich hab bis jetzt nichts brauchbares gefunden.

Meine Idee ist, dass man wohl zuerst auslesen lassen muss, wie oft
der "Link"-Syntax vorkommt, dann was zwischen Link-Anfang und Ende
steht (hier im Forum zB zwischen [ und ]), das ganze dann in ein
Array packen und das ganze dann (via Schleife?) in den eigentlichen
Text wieder reinpfriemeln... hm, soweit die graue Theorie...

Und nun die Frage: Wer hat eine kampferprobte Lösung? Mensch muss
das Rad ja nicht immer neu erfinden - oder verstösst meine Frage
jetzt zu sehr gegen das SELF-Prinzip?

Besten Dank für Tipps, Infos & Lösungsansätze

<img src="http://home.germany.net/100-80215/alex/images/promo/signet.gif" alt="">

<img src="http://home.germany.net/100-80215/alex/images/promo/akonline.gif" alt="">

http://www.atomic-eggs.com/selfspezial/daten/101.html

  1. Hallo Alex!

    So schwer ist das gar nicht:

    Du hast immer [  ] mit was drin.
    Das drin faengt mit link: an.
    Der rest ist der Link.

    also in PHP:
    if(eregi("<(.)]",$text,$ref)) { $linkURL=$ref[1>;}
    waere richtig. Das Prob dabei sind die gierigen Ausdruecke in PHP.
    Also besser (wenn denn vorhanden):
    if(preg_match("/<(.
    ?)]/i";$text,$ref)) {$linkURL=$ref[1>;}
    bzw: preg_match_all fuer mehrere Links verwenden.

    Siehe http://www.php.net/manual/ref.pcre.php. *g*

    Gruß
    Thomas (der P)

  2. Hi Alexander,

    Und nun die Frage: Wer hat eine kampferprobte Lösung? Mensch muss
    das Rad ja nicht immer neu erfinden

    $text=preg_replace("~[link: *([^]\n ]+)]~i","<a href="\1">\1</a>",$text);

    Falls die PCRE nicht enabled sind _und_ der Provider sich wehrt sie einzuschalten:

    $text = eregi_replace("[link:([^\n ]*)]","<a href="\1">\1</a>",$text);

    Das ist leider nicht ganz richtig, denn eigentlich sollte die erste ] den link
    beenden - nur das ([^]]) will irgendwesegen nicht.

    Gruss,
    Carsten