function eval_html($string) { if(version_compare(phpversion(),\"4.3.0\")>=0) foreach($GLOBALS as $arraykey=>$arrayvalue) global $$arraykey; $eval_str=$string; preg_match_all(\"/(<?php|<?)(.*?)?>/si\", $eval_str, $raw_php_matches); $php_idx = 0; while (isset($raw_php_matches[0][$php_idx])) { $raw_php_str = $raw_php_matches[0][$php_idx]; $raw_php_str = str_replace(array(\"<?php\",\"?>\",\"<?\",\"?php>\"), \"\", $raw_php_str); $exec_php_str, $eval_str, 1); $php_idx++; } return $eval_str; }
korzystam z niej do template'ow ktore maja w sobie phpa.
Problem jest taki ze gdy w ponownie parsowanym (przepuszczonym przez ta funkcje) kodzie jest jakas funkcja ktora korzysta z globali to po prostu ich nie importuje.
Czyli jesli zrobie:
<?php $x=\"aaa!\"; function a() { } ?>
to nic nie wypisze.