Код:
<?
$TextWithCode='<html><title>Main</title><body><?php global $j;echo "Hello";$j=2;?><hr><? global $j;echo "\$j=".$j;?></body></html>';
function Replacement($Matches)
{
****global $Functions;
****$Num=count($Matches);
****if($Num>1) for($i=1;$i<$Num;$i++) if(($Matches[$i]!="<?")&&($Matches[$i]!="<?php")) $Functions[]=create_function('',$Matches[$i]);
****return "<??>";
}
$Functions=array();
$Content=array();
$TextWithCode=preg_replace_callback('/(<\?php|<\?)(.*)\?>/sU',"Replacement",$TextWithCode);
$Content=explode("<??>",$TextWithCode);
$Num=count($Functions)>count($Content)?count($Functions):count($Content);
for($i=0;$i<$Num;$i++)
{
****if(isset($Content[$i])) echo $Content[$i];
****if(isset($Functions[$i])) echo $Functions[$i]();
}
?>
Примерно вот так Только если хотите использовать значение переменной в разных кусках - объявляйте ее global.
Если сделать вот так:
Код:
$TextWithCode='<html><title>Main</title><body><?php echo "Hello";$j=2;?><hr><? echo "\$j=".$j;?></body></html>';
то во втором фрагменте будет ошибка, поскольку $j в первой части локальная и во второй функции не будет видна. Открывающий тэг для php кода может быть как '<?' так и '<?php', разницы нет...
Если есть вопросы - буду рад ответить )