Если я определю встроенный массив в моем исходном коде, он будет работать.Но как я могу использовать имена переменных из базы данных?
Пока я разрабатывал этот код, я использую встроенный определенный массив.Но теперь я хочу получить элементы $search
и $replace
из базы данных.
Моя проблема : {var}
больше не заменяется значением $var
, а строкой "$var"
.
$template_tags = array(
'{order_id}',
'{customer_id}'
);
$replacements = array(
$insert_id,
$mail_customer_id
);
// works: str_replace($template_tags, $replacements, $source) is for example "The Customer 0123 has the Order-ID 0987"
Но если яполучить $template_tags
и $replacements
(ТОЛЬКО имена переменных, значения переменных устанавливаются ранее в исходном коде) из базы данных. Результат:
"The Customer $mail_customer_id has the Order-ID $insert_id"
Моя цель - получить переменнуюимена из базы данных, и они заменяются - до того, как определены - значения
Мой результат БД:
Array ( [0] => {order_id}
[template_tag] => {order_id}
[1] => $order_id
[replacement] => $order_id )
Array ( [0] => {customer_id}
[template_tag] => {customer_id}
[1] => $customer_id
[replacement] => $customer_id )
edit:
Этот код дает желаемый результат, но выглядит он не очень элегантно, и я не хочу, чтобы использовал eval
, поскольку это рискованно:
while ($value = mysqli_fetch_array($replacement_tags_query)) {
$replacements[] = $value['replacement'];
$template_tags[] = $value['template_tag'];
}
$str = str_replace($template_tags, $replacements, $testtext);
eval ("\$str = \"$str\";");
echo $str;