2012-07-20 49 views
-1

我已经从数据库调用内容可变,样品低于如何具体标记之间替换代码,并在其应用PHP的eval

$content = '<div><h1>content here</h1> 
<img src = 'image.jpg' /><br /> 

[code]echo 'welcome';[/code] 

<h2>some content here</h2> 
<p> some large content here</p> 

[code]echo 'Click Here';[/code] 

Thank you.'; 

echo 'headers here' .$content . 'footers here'; 

我如何在两者之间执行PHP的内容[代码]和[/ code]标签? 剩余的文本将写为HTML execpt在[代码]使用一些PHP代码[/代码]标签

+2

不要!但严重的是,为什么你想从数据库中评估代码?我会避免这种行为。或者,也许我误解了这个问题 - 你想要导入和评估PHP代码,或者只是将一些HTML转储到你的页面中? – Rhys 2012-07-20 15:04:19

+0

preg_replace()找到标签之间的内容,然后只需eval()就可以了。尽管如此,我强烈建议不要这样做。 – Julio 2012-07-20 15:13:13

回答

1

代码如果这是为您的网站templateting类型的系统,我建议走不同的路线。

首先你上面的代码将会改变,让你的代码之间的部分看起来像:

[code]{{msg}}}[/code] 

现在,你仍然可以在数据库中存储的PHP代码你的东西,如果你想要的,但它更有在将其放入数据库之前先对其进行评估,但我强烈建议不要这样做,并使用查找/替换系统。现在

,你会希望有一个功能,将做到以下几点:

function output_template($name, $data) { 
    $template_string = get_template_from_db($name); 
    for($data as $k) 
    { 
     $template_string = str_replace($k, $data[$k], $template_string); 
    } 
    return $template_string; 
} 

然后你就可以重复了这个函数的返回值。如果您认为您需要使用eval,请重新考虑您正在做什么,尤其是看起来是模板系统。