Динамические переменные str_replace (не зная имени)

У меня есть БД со страницами с некоторыми переменными в содержании, например exmpale [var1], [name], [foo], ..

Пример страницы:

привет [имя],

ты [var1] или [foo]?

Все эти переменные должны быть заменены соответствующими переменными php на выходе

[var1] становится $ var1
[имя] становится $ имя

Я знаю, что могу использовать str_replace вручную, чтобы изменить эти переменные, например:

echo( str_replace( array( [var1], [name], [foo] ), array( $var1, $name, $foo), $page ));

Но есть ли способ создать цикл, который автоматически заменяет все эти переменные?

0

Решение

Давайте рассмотрим массив, содержащий некоторую строку следующим образом:

array("var1","name","foo")

Итак, вот решение:

<?php
$rowdata=array("var1","name","foo");

foreach($rowdata as $key=>$value){
$rowdata[$key]="$".$value;
}

echo '<pre>';
print_r($rowdata);
echo '</pre>';

?>

0

Другие решения

Попробуйте этот код. Это работает. Прежде всего найдите все такие строки, которые находятся в скобках. а затем используйте preg_replace для замены содержимого.

$text = '[This] is a [test] string, [try] it.';
preg_match_all("^\[(.*?)\]^", $text, $matches);
$data = array_combine($matches[1],$matches[1]);

foreach($data as $key =>$value)
{
$text = preg_replace('/\['.$key.'\]/', '$'.$value, $text);

}
echo $text;
0

По вопросам рекламы [email protected]