У меня есть БД со страницами с некоторыми переменными в содержании, например exmpale [var1], [name], [foo], ..
Пример страницы:
привет [имя],
ты [var1] или [foo]?
Все эти переменные должны быть заменены соответствующими переменными php на выходе
[var1] становится $ var1Я знаю, что могу использовать str_replace вручную, чтобы изменить эти переменные, например:
echo( str_replace( array( [var1], [name], [foo] ), array( $var1, $name, $foo), $page ));
Но есть ли способ создать цикл, который автоматически заменяет все эти переменные?
Давайте рассмотрим массив, содержащий некоторую строку следующим образом:
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>';
?>
Попробуйте этот код. Это работает. Прежде всего найдите все такие строки, которые находятся в скобках. а затем используйте 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;