1

我正在尝试从 HTML 模板文件中获取 php 代码以执行它并将结果放回原处。我可以使用什么正则表达式代码?是否有一种方法也可以返回找到的第一个标签的位置?

<p>some html</p>

<?php $some = "php code"; ?>

<p>some <em>more</em> html</p>

<?php $some = "more php code"; ?>

我想要从 html 中过滤的 php 代码。

4

2 回答 2

0

您应该将变量传递给模板文件,而不是“取出 PHP 并将其放回原处”。

像这样的东西:

<?php 
function loadTemplate($path,$data=array()){
    if (file_exists($path) === false){
        throw new Exception('Template not found:'.$path);
        return false;
    }

    extract($data);
    ob_start();
    require($path);
    $return = ob_get_contents();
    ob_end_clean();
    return $return;
}

$vars = array('var1'=>$value,
              'var2'=>$somevalue,
              'var3'=>$someothervalue,
              'var4'=>$blab);

$template = loadTemplate('path/to/thefile.php',$vars);
?>

然后像 ect一样$varsthefile.php中访问数组值echo $var1 echo $var2

希望能帮助到你

于 2012-04-21T22:34:03.700 回答
0
preg_match("/<\?.*?\?>/m",$output,$matches)

或者

preg_match("/<\?.*?\?>/s",$output,$matches)

应该匹配所有行。

于 2012-04-21T23:20:48.050 回答