使PHP变量求值为';平原';文本


Make PHP variable evaluate as 'plain' text

我有两个PHP变量似乎有相同的值,$dynamic是由函数生成的,$test只是单引号中的文本。

当我打印它们的值时,它们是相同的,但$dynamic在regex函数中失败。

有没有什么方法可以让PHP字符串"不动态",只使用普通的旧文本

$test = 'username'; //Evaluates OK
die($test.' '.$dynamic); //Produces: username username

下面是函数,$pattern是问题。这实际上来自前面的一个问题,但我已经将问题缩小到$pattern的评估。除了preg_replace_callback之外,这似乎也是其他函数的问题。

public function output() {
if (!file_exists($this->file)) {
    return "Error loading template file ($this->file).<br />";
}
$output = file_get_contents($this->file);
foreach ($this->values as $key => $value) {
    $tagToReplace = "[@$key]";
    $output = str_replace($tagToReplace, $value, $output);

    $dynamic = preg_quote($key);
    $test = 'username';
    $pattern = '%'[if @'.$test.''](.*?)'[/if']%'; // produces: %'[if @username'](.*?)'[/if']%
    $output = preg_replace_callback($pattern, array($this, 'if_replace'), $output);
}
return $output;

}

$dynamic可能包含不可见字符。循环字符串并打印每个字符的字符代码(使用ord),并将其与"username"的结果进行比较。

var_dump也可能给出提示,因为它也会显示字符串的长度。