Tobias Perschon: preg_replace mit PHP code

hi!
warum funktioniert folgender code nicht, die größe wird nicht geändert da $size kein zahlenwert ist, settype hilft aber nicht... (egal ob float oder int)

ergebnis ist das [size=30]groß[/size]
die ausgabe
<span style='font-size:30pt'>groß</span>
erzeugt.
also greift die if überprüfung irgendwie nicht...

ich glaub das es was mit ' und " zu tun hat...
ich hab aber schon versucht die sache umzudrehen hat aber nicht geholfen...
was hab ich falsch gemacht?

CODE:

function sizecheck($size){
 settype($size, "float");
 if ($size > 18) $size = 18;
 return $size;
}

if($xtra_size) $text = preg_replace("/[size=(.*?)](.*?)[/size]/i",'<span style='font-size:'.sizecheck('$1').'pt;'>$2</span>',$text);

  1. Hallo Tobias,

    um Code auszuführen musst Du den 'e'-Modifier setzen.
    Besser noch, schau Dir im Manual die Funktion preg_replace_callback() an.
    Beachte Sicherheitsrisiken wenn Du Strings aus Benutzereingaben usw. verarbeitest.

    Viele Grüße

    Stefan

    --
    bythewaythewebsuxgoofflineandenjoytheday
    1. (ich hab mich jetzt registriert,der erste post ist also von mir)

      um Code auszuführen musst Du den 'e'-Modifier setzen.

      /[size=(.*?)](.*?)[/size]/i/e

      produziert den error:
      Unknown modifier '/' in edit.php on line 29

      ich werde mir aber mal die callback funktion anschauen!

      kannst du mir bitte kurz erklären was der unterschied zw der normalen und der mit callback ist?

      ein fehler im ersten post: settype hab ich dann weggegallen weil die variable immer int/float 0 war... (ist aber jetzt egal)

      1. hat sich erledigt ;)
        ich habs durchschaut!
        callback ist wirklich nützlich!
        jetzt funktioniert alles ;)

        grüße