2017-05-26 57 views
0

我已經通過所有以前的主題有一個很好的看,我不明白足夠的PHP使用它們來回答我的問題,所以提前很抱歉,如果這非常簡單!從preg_replace移動到preg_replace_callback

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

而且我需要preg_replace_callback更換preg_replace。我知道這不是一個簡單的開關,我需要添加更多的代碼,但我不知道要添加什麼。在此先感謝您的幫助。

回答

-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

+1

如果它是重複的,爲什麼你要回答? –

+0

我非常感謝鏈接到其他答案,但我的PHP知識太基礎,不能翻譯我如何使用它來解決我的問題。我沒有得到'/&#(\ d +);/m'的位,我想我試圖調用一個樣式表,但我不知道要改變什麼。我真的需要一些我可以剪切和粘貼的代碼 - 抱歉,真是太愚蠢了! – Claire

+1

您似乎試圖將當前作用域中的變量插入到您的字符串中。我將留下爲什麼這是一個壞主意,並假設沒有涉及用戶輸入。首先獲取當前範圍:'$ scope = get_defined_vars();'。接下來使用回調:'preg_replace_callback('/ \ $(\ w +)/',函數($ m)use($ scope){if(isset($ scope [$ m [1])))return $ scope [$ m [1]];否則返回$ m [0];},$ this-> getTemplateStyle());'。任務完成。 –

相關問題