Изменить ключ массива при отправке в str_replace PHP - PullRequest
0 голосов
/ 29 февраля 2020

Я пытаюсь использовать html шаблонов в моем проекте, и он пока работает, но для упрощения использования шаблонов я хотел бы использовать {} для обозначения областей поля. Вот так:

//tplCall.html
<div id="{CustID}">
    <div class="callname">{Name}</div>
    <div class="calladdress">{Address}</div>
</div>

Следующее работает отлично:

$tmpCall = file_get_contents("templates/tplCall.html");
$tmpdata = get_object_vars($thiscall);
$htmlout = str_replace(array_keys($tmpdata),array_values($tmpdata),$tmpCall);
echo $htmlout;

Но, очевидно, оставляет {} нетронутым. Я хотел бы сделать что-то вроде следующего, но я получаю ошибку массив-строка. Как я могу добавить {} к ключевой части, прежде чем она будет отправлена ​​в str_replace?

$tmpCall = file_get_contents("templates/tplCall.html");
$tmpdata = get_object_vars($thiscall);
$htmlout = str_replace("{" . array_keys($tmpdata) . "}",array_values($tmpdata),$tmpCall);
echo $htmlout;

1 Ответ

1 голос
/ 29 февраля 2020

Измените каждый элемент array_keys($tmpdata) явно:

$keys = array_map(function($v) { return '{' . $v . '}'; }, array_keys($tmpdata));
// also there's no need to apply `array_values` 
// as `str_replace` does not care about keys.
$htmlout = str_replace($keys, $tmpdata, $tmpCall);
...