2016-06-14 94 views
0
$str = "Hello {{name}} welcome to {{company_name}}"; 

$array = ['name' => 'max', 'company_name' => 'Stack Exchange']; 

如何使用數組值替換{{name}}和{{company_name}}。任何PHP函數返回像PHP - 如何更改字符串中使用數組的特定字

輸出
Hello max welcome to Stack Exchange 
+0

它是preg_replace_callback工作 – splash58

+0

感謝您的回覆,你可以給我舉例 – user3736833

+0

如果你的目標是印刷,而不是得到一個字符串,嘗試'回聲「你好」。$名字。「歡迎」。$公司;' –

回答

1

首先創建與搜索領域一個新的數組,包裹在大括號:

$searchArray = array_map(function($value) { 
    return "{{" . $value . "}}"; 
}, array_keys($array)); 

現在,你有你正在尋找令牌的數組,你已經有了一組你想用它替換標記的值。

所以只是做一個簡單的str_replace

echo str_replace($searchArray, $array, $str); 

工作例如:https://3v4l.org/8tPZt


這裏有一個整潔的小功能放在一起:

function fillTemplate($templateString, array $searchReplaceArray) { 
    return str_replace(
     array_map(function($value) { return "{{" . $value . "}}"; }, array_keys($searchReplaceArray)), 
     $searchReplaceArray, 
     $templateString 
    ); 
} 

現在你可以這樣調用它這個:

echo fillTemplate(
    "Hello {{name}} welcome to {{company_name}}", 
    ['name' => 'max', 'company_name' => 'Stack Exchange'] 
); 

// Hello max welcome to Stack Exchange 

例子:https://3v4l.org/rh0KX

+0

謝謝你的回答 – user3736833

0

結帳PHP的這個漂亮的功能:http://php.net/manual/de/function.strtr.php 你可以找到有例子,它的解釋。

$str = "Hello {{name}} welcome to {{company_name}}"; 

$array = ['{{name}}' => 'max', '{{company_name}}' => 'Stack Exchange']; 

print strtr ($str, $array); 
+0

OP爲什麼要「試試這個」?一個好的答案***將總是解釋所做的事情以及爲什麼這樣做,不僅是爲了OP,還是爲了將來訪問SO。 –

+0

好的,然後...我改變它 – JustOnUnderMillions

+0

很好的編輯,但你不解釋它。 –

相關問題