从preg_replace移动到preg_replace_callback

时间:2017-05-26 09:35:16

标签: php

我已经仔细研究了之前的所有主题,而且我不太了解PHP使用它们来回答我的问题,如果这很简单,请提前抱歉!

{
    $content = preg_replace('/\$([\w]+)/e', '$0', $this->getTemplateStyle());
    $custom_css = $this->getCustomCSS();
    return $content.$custom_css;
}

我需要将preg_replace替换为preg_replace_callback。我知道它不是一个简单的开关,我需要在代码中添加更多内容,但我不知道要添加什么。在此先感谢您的帮助。

1 个答案:

答案 0 :(得分:-1)

[解决] 您似乎试图将当前作用域中的变量注入到字符串中。我不理会为什么这是一个坏主意,并假设没有涉及用户输入。首先得到当前范围:

$scope = get_defined_vars();

接下来使用回调:

preg_replace_callback('/\$(\w+)/',function($m) use ($scope) {if( isset($scope[$m[1]])) return $scope[$m[1]]; else return $m[0];}, $this->getTemplateStyle()); 

完成工作。 - @Niet the Dark Absol