2012-10-17 75 views
2

例如我用這個:什麼是解析電子郵件或html模板的最佳方式?

對於電子郵件模板:

email.tpl:

hello {username}, 
your password is: {password} 

parser.php

function parse(){ 
$message = file_get_contents("email.tpl"); 
$patterns[0] = "/\{username\}/"; 
$patterns[1] = "/\{password\}/"; 
$replacements = array(); 
$replacements[0] = $username; 
$replacements[1] = $password; 
return preg_replace($patterns, $replacements, $message); 
} 

對於HTML模板: html.tpl:

<b>hello {username}</b>, 
<p>your password is: {password}</p> 

parser.php

function parse(){ 
$message = file_get_contents("html.tpl"); 
$patterns[0] = "/\{username\}/"; 
$patterns[1] = "/\{password\}/"; 
$replacements = array(); 
$replacements[0] = $username; 
$replacements[1] = $password; 
return preg_replace($patterns, $replacements, $message); 
} 

這是最好的辦法或者是有一個更好的?

+2

有'str_replace',我猜它比'preg_replace'更容易處理(只在你不需要regex的情況下)。 例如,在你的情況下,{username}是'{username}' - 不需要regex,但是如果你有'{post-234}',其中234是一個id,'preg_replace'會有幫助。 –

回答

3

您的方法很好,但您會發現PHP人員頻繁提及的一件事就是'PHP已經是模板引擎'。

所以你可以做這樣的事情:

email.tpl

<?php 
hello $username, 
your password is: $password 
?> 

parser.php

<?php 
function parse($username, $password) { 
    ob_start(); 
    require 'email.tpl'; 
    return ob_get_clean(); 
} 
?> 

調用解析函數

$emailBody = parse('Someuser', 'Somepass'); 
0

可以使用preg_replace,但由於您沒有進行動態替換(只有2個靜態變量,稱爲用戶名和密碼),因此您可以使用strtr函數。

strtr做簡單的字符串替換

preg_replace沒有複雜的正則表達式字符串搜索和替換

strtr函數的效率會快很多(如果您的HTML是重型)..你可以使用它像這樣:

function parse(){ 
    $message = file_get_contents("html.tpl"); 
    return strtr ($message , array(
     "{username}" => $username, 
     "{password}" => $password, 
    )); 
} 

如果您想要一個動態系統(自動替換0 ... n個變量),preg_replace是不錯的選擇

相關問題