You naprawdę nie powinien tego robić, ale jeśli koniecznie musisz, możesz to zrobić za pomocą tej klasy:
class PhpStringParser
{
protected $variables;
public function __construct($variables = array())
{
$this->variables = $variables;
}
protected function eval_block($matches)
{
if(is_array($this->variables) && count($this->variables))
{
foreach($this->variables as $var_name => $var_value)
{
$$var_name = $var_value;
}
}
$eval_end = '';
if($matches[1] == '<?=' || $matches[1] == '<?php=')
{
if($matches[2][count($matches[2]-1)] !== ';')
{
$eval_end = ';';
}
}
$return_block = '';
eval('$return_block = ' . $matches[2] . $eval_end);
return $return_block;
}
public function parse($string)
{
return preg_replace_callback('/(\<\?=|\<\?php=|\<\?php)(.*?)\?\>/', array(&$this, 'eval_block'), $string);
}
}
Nazwijmy to tak:
$p = new PhpStringParser();
echo $p->parse($string);
Źródło: http://www.php.net/manual/en/function.eval.php#108091
tak trzymać prezentacji i logiki indywidualne. Konieczność wykonania tego oznaczałoby, że warto przemyśleć swoje wybory dotyczące projektu. – dm03514
Sposób, w jaki budujesz swoją witrynę, mogę teraz powiedzieć, że spowoduje to problemy w dół. Oto moja sugestia: użyj Smarty lub podobnego, aby oddzielić szablony i kod. – Hassan
Wygląda na to, że podjąłeś naprawdę poważną decyzję. – PeeHaa