2007-12-26
Странное поведение eval
eval('$c = "test;');
print $c;
Несмотря на явную синтаксическую ошибку код внутри eval выполняет присваивание, хотя и выводит на экран ошибку.
Чтобы вылавливать подобные ошибки пришлось сделать буффер и смотреть не вываливает ли eval что нибудь на экран.
Так выглядит готовая функция для приобразования PHP строки в переменную:
function str2php($value){
$c = null;
ob_start();
eval('$c ='.$value.";");
$error = ob_get_contents();
ob_end_clean();
if (!empty($error)) return null;
return $c;
}
разрешены только теги br, font, span, p, strong, u, p, blockquote, a, div, img - остальные будут безжалостно удаляться
комментарии: