ereg_replace oder preg_replace mit function

Hallo,

ich sehe scheinbar den Wald vor lauter Bäume nicht.
Aus irgend einen text sollen URLs heraus gefiltert werden
und als Link aufbereitet werden:

Beispieltext:
"Weitere Informationen zu der Schwachstelle und moegliche
Workaround-Massnahmen entnehmen Sie bitte folgenden Quellen:

[1] 
[2] "

Ausgabe: die Urls sollen anklickbar sein.

Der ereg_replace unten wandelt dies auch ordentlich um.
Aber manche Links sind danach so lang, dass diese in den Mozilla Browsern mir die Seitenformatierung zerstören, da Mozilla diese nicht umbrechen kann.
Daher muss der Link zwischen

"\>http://usw gekürzt werden.
Statt die Function auszuführen für die Kürzung wird mir diese jedoch angezeigt einschliesslich dem Inhalt.
Beispielausgabe:

     ''" .reduceurl(\'http://www.spiegel.de/netzwelt/web/0,1518,557797,00.html\', 30). "''



Irgend jemand muss mir den Baum geklaut haben, um den Fehler zu sehen :smile:)
Hat jemand ne Idee ??



    
    function reduceurl($url, $url\_length)
    {
     echo "URL=".$url."
    ";
     $reduced\_url = substr($url, 0, $url\_length);
     if (strlen($url) \> $url\_length) $reduced\_url .= '...';
     return $reduced\_url;
    }
    
    
    function UrlFilter($name,$len)
    {
     $name = ereg\_replace("[[:alpha:]]+://[^[:space:]]+[[:alnum:]/]",
     "'[' .reduceurl(\'\\0\', $len). '](%255C%2522%255C%255C0%255C%2522)'", $name);
     return $name;
    }

Hallo,

ich sehe scheinbar den Wald vor lauter Bäume nicht.
Aus irgend einen text sollen URLs heraus gefiltert werden
und als Link aufbereitet werden:

Beispieltext:
"Weitere Informationen zu der Schwachstelle und moegliche
Workaround-Massnahmen entnehmen Sie bitte folgenden Quellen:
[1]

[2]
"

Ausgabe: die Urls sollen anklickbar sein.

Der ereg_replace unten wandelt dies auch ordentlich um.
Aber manche Links sind danach so lang, dass diese in den
Mozilla Browsern mir die Seitenformatierung zerstören, da
Mozilla diese nicht umbrechen kann.
Daher muss der Link zwischen

">http://usw gekürzt werden.
Statt die Function auszuführen für die Kürzung wird mir diese
jedoch angezeigt einschliesslich dem Inhalt.
Beispielausgabe:

‚‘"
.reduceurl(‚http://www.spiegel.de/netzwelt/web/0,1518,557797,00.html‘,
30). "’’

Irgend jemand muss mir den Baum geklaut haben, um den Fehler
zu sehen :smile:)
Hat jemand ne Idee ??

Sieht ziemlich kompliziert aus. Soll das noch etwas
besonderes zusätzlich machen? Denn nur für die Um-
wandlung in HTML mit maximaler Länge reicht ein
preg_replace mit einer callback-function:


$url_length = 30;

function urimapper($match) {
global $url_length;
$uri = preg_replace(’/(?$uri";
}

$urltext = preg_replace_callback(’|(http://[^>"\s]+)>?|’, ‚urimapper‘, $text);
print($urltext);

Grüße

CMБ

Hallo,

function UrlFilter($name,$len)
{
$name =
ereg_replace("[[:alpha:]]+://[^[:space:]]+[[:alnum:]/]",
„’’ .reduceurl(’\0’, $len).’’“, $name);
return $name;
}

Das geht so nicht, hier muß der /e-Modifier
verwendet werden, dazu bedarf es preg_replace:


function UrlFilter($name, $len)
{
return
preg_replace(’|[[:alpha:]]+://[^[:space:]]+[[:alnum:]/]|e’,
„’’.reduceurl(’\0’,$len).’’“,
$name);
}

Ausserdem stimmt Dein regulärer Ausdruck nicht
ganz, da Du umschliessende nicht beachtest
(werden verdoppelt).

Grüße

CMБ

merci,

ein wenig modifiziert (Aufruf über eine function) läuft die Lösung wunderbar.

Hat mir sehr geholfen. Jetzt sehen die Seiten auch in der Mozilla-Familie lesbar aus.

gruss
webklee