Fritz: Link Umwandlung per regex

Hallo,

$link =  preg_replace("/([\w]+://[\S+./@]+[\w/])/i","<a href="$1">$1</a>", $string);

Eine regex in ähnlicher Form verwende ich zur automatischen Umwandlung von URIs in Links.
Soweit kein Problem.

Aber an Folgendem beisse ich mir die Zähne aus:
Wie kann ich den Unterausdruck $1, also den angezeigten URI, bearbeiten. Konkret: z.B. auf eine max. Stringlänge kürzen?

Folgendes Konstrukt versagt leider kläglich:
$link =  preg_replace("/([\w]+://[\S+./@]+[\w/])/i","<a href="$1">substr($1,0,30)</a>", $string);

Vielleicht kann/mag mir jemand helfen, mein Problemchen in 2007 zu lösen :-)

Gruß Fritz

--
ie:( fl:( br:? va:) ls:< fo:| rl:? ss:{ de:> js:| mo:} zu:}
http://webdesign.weisshart.de/
  1. echo $begrüßung;

    Folgendes Konstrukt versagt leider kläglich:
    $link =  preg_replace("/([\w]+://[\S+./@]+[\w/])/i","<a href="$1">substr($1,0,30)</a>", $string);

    Doppelte Anführungszeichen haben die Eigenart, Variablennamen aufzulösen, jedoch keine Funktionsnamen. Dein "substr(" ist nichts weiter als eine Folge von Buchstaben. Außerdem werden Parameter von Funktionen zuerst berechnet und dann damit die Funktion aufgerufen. Wenn du also das substr() arbeitender Weise notiert hättest, wäre es fertig bevor preg_replace() aufgerufen wird. Wenn du möchtest, dass etwas mit den Suchergebnissen passieren soll, musst du das hinterher selbst machen oder die Callback-Variante preg_replace_callback() verwenden.

    echo "$verabschiedung $name";

    1. Hallo echo "$verabschiedung $name";,

      Wenn du möchtest, dass etwas mit den Suchergebnissen passieren soll, musst du ... die Callback-Variante preg_replace_callback() verwenden.

      Danke, das hab ich gesucht.
      You made my year ;-)

      Gruß Fritz

      --
      ie:( fl:( br:? va:) ls:< fo:| rl:? ss:{ de:> js:| mo:} zu:}
      http://webdesign.weisshart.de/