在没有<?php?>的情况下用HTML中的值替换变量

问题描述:

Here is the situation. I have 2 files

content.php

<?php $my_var = "this is a variable"; ?>
<h1> php{my_var} </h1>

index.php

<?php include "content.php" ?>

The result should be:

<h1>this is a variable</h1>

I know how to work with preg_replace_callback. But I don't know how can I change php{my_var} with the value of $my_var. All the logic should happens inside the index.php.

Edit

index.php

function replace_pattern($match)
{
    what should I write here
}
echo preg_replace_callback("/php\:\{(.*)\}/", "replace_pattern", $Content);

Edit 2

Variables are not declare in the global scope

Note the added question-mark in the regular expression to make it less greedy.

$my_var = 'Hello World!';

// Get all defined variables
$vars = get_defined_vars();

$callback = function($match) use ($vars)
{
    $varname = $match[1];
    if (isset($vars[$varname])) {
        return $vars[$varname]; // or htmlspecialchars($vars[$varname]);
    } else {
        return $varname . ' (doesn\'t exists)';
    }
};
echo preg_replace_callback("/php\:\{(.*?)\}/", $callback, $Content);

Demo: http://phpfiddle.org/main/code/ax15-bpyw

Try this:

$my_var = "this is a variable";
$string = '<h1> php{my_var} </h1>';
$pattern = '/php{(.*)}/i';
preg_match($pattern, $string, $match);
$varName = $match[1];
$newString= preg_replace($pattern, $$varName, $string);
echo $newString;

But, warning! In this case, i assume, if the code is php{somethin}, then there should be a $something variable. I used dynamic variable name. If you want to use only $my_var then use like this:

$newString= preg_replace($pattern, $my_var, $string);