[英]Replace placeholders in array with values from other array
我有 2 個帶有占位符的數組,它們是另一個數組中的鍵
arr1 = array(
"id" => "{{verticalId}}",
"itemPath" => "{{verticalId}}/{{pathId}}/");
arr2 = array(
"verticalId" => "value1",
"pathId" => "value2");
那么如何在arr1
運行並用來自arr2
值替換占位符?
foreach ($arr1 as $key => &$value) {
$value = preg_replace_callback('/\{\{(.*?)\}\}/', function($match) use ($arr2) {
return $arr2[$match[1]];
}, $value);
}
當然,這是一種方法。 它需要一點愛,PHP 5.3+
<?php
$subject = array(
'id' => '{{product-id}}'
);
$values = array(
'product-id' => 1
);
array_walk($subject, function( & $item) use ($values) {
foreach($values as $template => $value) {
$item = str_replace(
sprintf('{{%s}}', $template),
$value,
$item
);
}
});
var_dump(
$subject
);
在@Barmar 的答案中循環目標數組不是(並且在 2013 年也沒有)。 數組被允許作為preg_replace_callback()
函數的 $subject 。
從 PHP 7.4 開始,您可以使用可以自動訪問父作用域的箭頭函數形式。
您不需要轉義模式中的大括號。 如果括號內容是確切的數字,則只需要轉義最后一個左括號,例如{\\{300}}
我通常不建議在正則表達式中使用.*
,但我只是想出了一個規則,即{{ }}
中的字符只能是\\w+
最新回答:
$arr1 = preg_replace('/{{\w+}}/', fn($m) => $arr2[$m[1]], $arr1);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.