• Hallo Community,

    ich hab ein profilsystem und da gibts ein Feld wo man bei seinem profil HTML und CSS verwenden darf um die Seite umzudesignen.

    dieses Feld verwendet auch die Funktion nl2br().

    Wenn jetzt jemand einen CSS-Sytle-Tag eingibt kommt das (logischerweise):

    <style type="text/css"><br />
    body {<br />
    background-color: #000000;<br />
    }<br />
    </style>

    Ich möchte die Style-HTML Tags herausfiltern und die Umbrüche entfernen. Habe nur wenig ahnung von RegEx ... Kann mir wer helfen, hab nirgendwo was brauchbares gefunden.

    PHP
    if(isset($this) || !isset($this)){ // that's the question...
  • Hallo,

    ja daran hatte ich gedacht aber ich brauchs garnicht mehr ... Kann RegEx wohl besser als ich dachte.

    Simpel:

    Code
    $tmp1 = eregi_replace("(.*)<style(.*)>(.*)</style>(.*)", [URL='file://1/']\\1[/URL], $html_text);
    $tmp2 = eregi_replace("(.*)<style(.*)>(.*)</style>(.*)", "<style\\2>\\3</style>", $html_text);
    $tmp3 = eregi_replace("(.*)<style(.*)>(.*)</style>(.*)", [URL='file://4/']\\4[/URL], $html_text);
     
    echo nl2br($tmp1).$tmp2.nl2br($tmp3);



    Das geht. Jetzt eine Frage:

    wenn ich jetzt so einen Komiker habe der sowas macht:

    Code
    <script type="text/javascript" language="Javascript">
    while( true )
    {
      alert("Haha!");
    }
    </script>



    Den Code entfernen.
    Sollte so gehen oder?

    Code
    $full = nl2br($tmp1).$tmp2.nl2br($tmp3);
    $full = eregi_replace("(.*)<script(.*)>(.*)</script>(.*)", "[URL='file://1%3Cbr%20/%3E//4']\\1<br />\\4[/URL]", $full);
     
    echo $full;



    Oder ?

    Mfg

    PHP
    if(isset($this) || !isset($this)){ // that's the question...
  • Ok, wzu frag ich eig. noch, irgendwie krieg ichs dann immer selbst hin :)

    Danke trotzdem.

    Das ist gut, aber du solltest deine Lösung ins Forum posten, da irgendwann jemand anders an deinem Punkt stehen könnte und ihn genau diese Lösung weiterbringen könnte ;)

    Der frühe Vogel fängt den Wurm,
    aber die zweite Maus bekommt den Käse.

  • Aber du solltest bei deiner "<script> ...." Ueberlegung sofort bemerkten: Aha! Hier kann der Benutzer _ALLES_ eingeben.

    In dem Fall solltest du nicht einzeln verbieten (Durch RegEx) sondern einzeln erlauben! Sonst ist da auch superschnell PHP oder <iframe> oder was weiss ich drauf.

    MfG,

    //Immer schoen die Sicherheit beachten Papa...

  • PHP
    $text = preg_replace_callback('~<style type="text/css">.*</style>~Ui', 'removeBr', $text);
    function removeBr(array $found)
    {
    return str_replace("<br/>\n", "\n", $found[0]);
    }


    Sollte klappen, hab mal ne BBCode-Engine gemacht. ;)

    Viele liebe Grüße
    The User