Ich krame diesen Thread dann auch wieder mal aus, da ich seit dem Umstieg von PHP5.2.6 auf PHP5.3.2 Ein Problem mit dem allseits bekannten Code der Funktionen removeEvilTags() und removeEvilAttributes() habe, für das ich selbst bislang keine Lösung gefunden habe.
$this->bbcode_second_pass_code('', 'function removeEvilTags($source,$iframe_allowed){
global $allowedTags;
if($iframe_allowed == 1) $allowedTags.= "<iframe>";
$source = strip_tags($source, $allowedTags);
// bis hier ist noch alles okay :)
return preg_replace('/<(.*?)>/ie', "'<'.removeEvilAttributes('\\1').'>'", $source, $allowedTags);
}
function removeEvilAttributes($tagSource){
global $stripAttrib;
return stripslashes(preg_replace("/$stripAttrib/i", 'forbidden', $tagSource));
}')
Nach dem Aufruf von return preg_replace('/<(.*?)>/ie', "'<'.removeEvilAttributes('\\1').'>'", $source, $allowedTags); wird ein leerer String zurück gegeben, oder anders gesagt: Die Bio wird nicht angezeigt.
Bei der Kreation von regulären Ausdrücken tue ich mich immer noch recht schwer, kann hier aber keinen Fehler entdecken. Wie auch, denn bis PHP5.2.6 gab es nie Probleme mit diesem Codeschnipsel. Mein Verdacht liegt daher eher auf der Rückreferenzierung '\\1'.
Doch nach nun mehr 3 Tagen erfolglosen Suchen und Versuchen hier mein Hilferuf! Ich hoffe jemand von euch kennt den Grund für das plöztliche Versagen dieser Funktion, oder kann sich einen Reim darauf machen!
Edit: Zu erwähnen wäre vielleicht noch, dass ich mit dem Umstieg auf PHP5.3.2 auch magic_quotes_gpc und magic_quotes_runtime auf Off gesetzt habe, und das Aktivieren dieser Einstellungen über ini_set() in der dbwrapper.php ebenfalls unterbunden habe.
Aber auch ein kurzzeitiges Reaktivieren der magic_quotes-Einstellungen brachte keine Änderungen. Hätte mich auch gewundert, aber irgend wann fängt man an auch das Unwahrscheinliche ins Auge zu nehmen, wenn man anders nicht weiter kommt.