爆炸字符串然后解析变量的分隔符

时间:2014-09-27 08:43:07

标签: php

如果我有一个字符串:

$string = "the year is currently <!--CODE echo date('Y'); CODE-->, it's been a good year."

上面的字符串<!--CODECODE-->中的哪些是分隔符,分隔符之间的所有内容都脱离了上下文并变成了字符串。然后再次将它重新组合在一起但删除分隔符并将eval()应用于分隔符内的字符串。

据推测,我应该使用explode和implode来拆分和连接字符串但是如何定义和解析变量的分隔符,正如我所描述的那样我不知道。

如果有人能帮我解决这个问题,我真的很感谢谢谢。

编辑:也许我应该清楚一件事。上面示例中的$ string是一个包含HTML的数据库条目,这个HTML是对最终用户的回应,但在此之前,我想处理上述HTML注释的数据库条目并解析其中的PHP代码因此。我不能简单地将PHP存储在数据库中,因为它在所有人都可见的文档中回显,或者HTML注释嵌入在文档中。我想解析包含PHP代码的HTML注释的数据库条目,以便我可以分离字符串并在包含PHP代码的字符串上使用eval()。

1 个答案:

答案 0 :(得分:1)

就像那样:

$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,你需要使用输出缓冲来将其输出捕获到字符串中。