从PHP中的文本文件中提取变量

时间:2017-03-22 00:00:48

标签: php templates variables

我有一个很好的搜索,没有找到任何与我的问题相关的内容,所以请不要在没有向我显示相关示例的地方投票...

尝试将模板文件构建为文本文档以简化其他人以后修改它,但我无法弄清楚如何让PHP识别其中的变量。

我想要的工作:

//template.txt
Every time I find $foo,
I get a little $bar,
template text.

注意:换行符对位置至关重要。

//handler.php
$foo = 'Beer';
$bar = 'Excited';
$file = file('template.txt');

foreach ($file as $line) {
    echo $line;
}

我希望这返回:

Every time I find Beer,
I get a little Excited,
template text.

但它正在逃避变量标记($), 并且正在返回:

Every time i find $foo,
I get a little $bar,
template text.

我尝试用以下代码替换str:

if (strpos($line, '\$foo')) {
    str_replace('\$foo', $foo, $line);
}

(尝试使用和不使用$符号,以及此处的许多变体) 充其量我可以让它识别变量名称,但它不是替换。

有没有人有这方面的经验?

在网上找不到太多信息。 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

当你使用单引号时,它会自动转义那里的所有内容,所以你告诉它要替换\ $ foo而不是$ foo

str_replace('$foo', $foo, $line);

你也不需要if语句,如果它找不到它,它无论如何都不会做任何事情。

如果你有更多的变量你可以设置一对数组,而不是逐行迭代它,只需立即将整个字符串抛出它

$file = file('template.txt');
$search = array('$foo', '$bar');
$replace = array('Beer', 'Excited');
$file = str_replace($search, $replace, $file);
foreach ($file as $i) {
    echo $i;
}