如果我有一个字符串,比如:
$string = "the year is currently <!--CODE echo date('Y'); CODE-->, it's been a good year."
在上面的字符串中,<!--CODE
和CODE-->
是分隔符,分隔符之间的所有内容都断章取义,形成一个字符串。然后再次将其内爆在一起,但删除了分隔符,并将eval()应用于从分隔符中生成的字符串。
据推测,我应该使用爆炸和内爆来分割和连接字符串,但我不知道如何定义和解析变量的分隔符,正如我所描述的那样。
如果有人能帮我做这件事,我真的很感激,谢谢你。
编辑:也许我应该清楚一件事$上面例子中的字符串是一个包含HTML的数据库条目,这个HTML会被回显给最终用户,但在此之前,我想处理上面提到的HTML注释的数据库条目并相应地解析其中的PHP代码。我不能简单地将PHP存储在数据库中,因为它要么在所有人都可见的文档中得到响应,要么HTML注释嵌入在文档中。我想解析包含PHP代码的HTML注释的数据库条目,这样我就可以分离字符串,并对包含PHP码的字符串使用eval()。
类似:
$string = "the year is currently <!--CODE return date('Y'); CODE-->, it's been a good year.";
$string = preg_replace_callback('/<!--CODE(.*?)CODE-->/',
function($groups) { return eval($groups[1]); },
$string);
echo $string; // displays: "the year is currently 2014, it's been a good year."
请注意,我在嵌入代码中将"echo"更改为"return"。如果您确实需要使用echo,则需要使用输出缓冲将其输出捕获到字符串中。