2013-04-18 24 views
-1

我見過系統使用的方法是在文本中輸入%{variable_name}%(可以說存儲在數據庫中或發送大量電子郵件),並且當頁面它找到%{variable_name}並用另一段代碼/字符串替換它。將找到替換的PHP腳本%{variable_name}%

例如在發送羣發電子郵件到郵件列表:Hello %{name}%,這是一封電子郵件....當點擊提交時,它會發送電子郵件,除了它將會...「你好John Doe,這是一個電子郵件「...

我搜索谷歌,找不到它,因爲我真的不知道它叫什麼。我剛剛在代碼中看到了這一點,我正在編寫一個代碼,它將非常有用。

如果有人能告訴我它叫什麼,搜索什麼或如何實現它的例子,那將是太棒了。

(如果我把錯誤的標籤在此,請更改爲正確的),我成功地使用這種方法

+0

您可以簡單地使用str_replace將值替換爲值。 –

+1

[模板引擎](http://en.wikipedia.org/wiki/Template_engine_(web))。 –

回答

2

$message = str_replace('[NAME]', $name, $message); 

所以在實例[NAME]羣發電子郵件是由$name

內容所取代。如果你願意,你都那麼%{NAME}%被取代的$name內容由語法:

$message = str_replace('%{NAME}%', $name, $message); 

你可以重做你想要的時候,說你要添加特定的鏈接和電子郵件地址:

$message = str_replace('%{NAME}%', $name, $message); 
$message = str_replace('%{LINK}%', $link, $message); 
$message = str_replace('%{EMAIL}%', $email, $message); 

參考:http://php.net/manual/en/function.str-replace.php

+0

因此,讓我們說如果我想要一個名爲%{name}%的字符串,我會像輸入字符串一樣輸入字符串,還是將其命名爲$ message = str_replace('%{NAME}%',$ name,$ message) ;' – KDJ127

+0

是的,使用你喜歡的代碼語法! – jtheman

+0

你真棒..當我看到你的編輯時,我實際上將要詢問多個問題。非常感謝你的幫助。 – KDJ127

1

我寫了一個類你:

class templatevars{ 
    private static $vars=array(); 
    public static function set($var,$val){ 
     self::$vars["%{".$var."}%"]=$val; 
    } 
    public static function replace($text){ 
     return str_replace(array_keys(self::$vars),array_values(self::$vars),$text); 
    } 
} 

用法:

templatevars::set("varname","text to insert"); 
templatevars::set("varname2","other text to insert"); 
echo templatevars::replace("First: %{varname}% Second: %{varname2}%"); 

如果你想多替代品,從類中刪除所有靜態分類,並:

$replacer_1=new templatevars(); 
$replacer_1->set("var","text"); 
$result=$replacer_1->replace($text_source); 
+0

你的工作與基本的str_replace有什麼區別? – KDJ127

+0

礦有兩個優點: - 存儲可重用的變量/值對 - 具有大量var/val對的性能要稍好一點,因爲它只調用一次var_reval對的數目 – Dodo

+0

如果你有時間,你能告訴我如何使用你的班級做以下事情....可以說我有一個羣發郵件工具,我想查詢我們的郵件列表中的所有人,並向他們發送此消息, 'Hello%{first name}%,這是一個羣發郵件,它在郵件列表= yes的情況下搜索配置文件的數據庫,然後向它們發送一封電子郵件,其中包含名字......我知道如何處理郵件和查詢,但我將如何將您的課程納入該類? – KDJ127