Smilies beim Ausgeben aus der DB umwandeln

Ich hätte noch ein Problem. Und zwar zu ein paar anderen Funktionen die ich einbinden wollte. Und zwar binde ich sie so ein:

PHP:
if($page == "verschiedenes") {
$abfrage = "SELECT * FROM mitglieder WHERE nick = '$nick'";
$ergebnis = mysql_query($abfrage) OR die(mysql_error() );
 if ($row = mysql_fetch_assoc($ergebnis) ) {
$text = $row['frei'];
include ("pageersetzen.php");
echo "<div algin='center'>
".nl2br(smilies(linkLenght(picSize($text))))." 
";
}
}

Die Funktionen sehen so aus:
PHP:
// Prüft die Linklänge und passt sie gegebenenfalls an
    // wird für preg_replace_callback definiert
    function linkLenght($treffer)
    {
        // $treffer[1] ist die URL
        $url = trim($treffer[1]);
        // $treffer[2] ist der Ausgabename
        // wurde kein Name angegeben, wird die URL als Name gewählt
        if(strlen(trim($treffer[2]))!=0)
            $linkname = $treffer[2];
        else
            $linkname = $treffer[1];
        // legt eine maximale Länge von 50 Zeichen fest
        // Ausnahme bei [img]-Tags
        if(strlen($linkname)>50 AND !substr_count(strtolower($linkname), '[ img]') AND !substr_count(strtolower($linkname), '[ /img]'))
            $linkname = substr($linkname, 0, 45-3)."...".substr($linkname, -5);
        // Rückgabelink
        $ergebnis = "<a href=\"".$url."\" target=\"_blank\">".$linkname."</a>";
        return $ergebnis;
    }

und ...

PHP:
// Prüft die Bildausmaße und passt sie gegebenenfalls an
    // wird für preg_replace_callback definiert
    function picSize($treffer)
    {
    // falls keine gültige Adresse angegeben wurde, wird die Fehlermeldung unterdrückt
        $size = @getimagesize($treffer[1]);
    if ($size[0] > 400) {
        $width = 400;
        // Höhe berechnen
        $height = ($size[1]/$size[0])*$width;
           return " <img src=\"".$treffer[1]."\" width=\"".$width."\" height=\"".$height."\" border=\"0\"> ";
    }
    else
        return " <img src=\"".$treffer[1]."\" border=\"0\"> ";
    }

So wird allerdings bei der Textausgabe gar nichts mehr angezeigt.
 
Deine Funktion picsize() braucht ein Bild und kann nicht mit Text arbeiten.

Deine Funktion linkLenght (übrigens falsch geschrieben) erwartet ein Array aus:
$treffer[1] = URL
$treffer[2] = Name des Links

Beide Funktionen können somit nicht einfach auf einen Text angewendet werden.
Wie in der Beschreibung von LinkLenght angegeben, muss sie [phpf]preg_replace_callback[/phpf] kombiniert werden.
 
Also müsste ich vorher sozusagen gucken, ob in $text irgendwo [ url ] steht und nur dann die funktion ausführen? Das gleiche dann für [ img ], oder verstehe ich das falsch?
 
Ja, du müsstest mit regulären Ausdrücken alle [ url ] Tags filtern und LinkLength darauf anwenden und genau das gleiche für [ img ] und picSize.
 
Zurück