фигурные скобки php заменяют значения

Я никогда раньше не использовал фигурные скобки в php

Однако я обновляю существующий сайт …

В базе данных у меня есть такая информация, как в

YOUR NAME {CH_NAME} {URL_NAME}

Я хотел бы получить информацию и показать ее в соответствующем
Я хочу изменить значение переменной CH_NAME на значение & то же самое для URL_NAME и в конце показывает полную информацию, такую:

1-нормальный:

$beforeStr="YOUR NAME {CH_NAME} {URL_NAME}";
$CH_NAME="John";
$URL_NAME="http://xxxx";

echo $beforeStr ; //would like to show : YOUR NAME John http://xxxx

С уважением

0

Решение

Если вы действительно хотите использовать фигурные скобки, попробуйте это. Все замены будут сделаны автоматически, только из соответствующих имен переменных.

$CH_NAME = "John";
$URL_NAME = "http://xxxx";
$beforeStr = "YOUR NAME {CH_NAME} {URL_NAME}";

preg_match_all('/{(\w+)}/', $beforeStr, $matches);
$afterStr = $beforeStr;
foreach ($matches[0] as $index => $var_name) {
if (isset(${$matches[1][$index]})) {
$afterStr = str_replace($var_name, ${$matches[1][$index]}, $afterStr);
}
}

echo $afterStr;
1

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

Только вы должны использовать str_replace :

$beforeStr="YOUR NAME {CH_NAME} {URL_NAME}";

$CH_NAME="John";
$URL_NAME="http://xxxx";
$OTHER = "OTHER";

$beforeStr = str_replace(
array('{CH_NAME}','{URL_NAME}','{OTHER}'),
array($CH_NAME,$URL_NAME,$OTHER),
$beforeStr);

echo $beforeStr ;

Другой способ это:

$beforeStr = "YOUR NAME {CH_NAME} {URL_NAME} - {OTHER} ";

$variables = array(
'CH_NAME'=>'John',
'URL_NAME'=>'http://xxxx',
'OTHER'=>'other'
);
//if var exist then replace
$response = preg_replace_callback('/{(.+?)}/ix',function($match)use($variables){
return !empty($variables[$match[1]]) ? $variables[$match[1]] : $match[0];
},$beforeStr);

echo $response;
3

Используйте строковую интерполяцию. Вы должны использовать строки с двойными кавычками ", Затем просто поставьте перед скобками знак доллара:

echo "Hello ${NAME}";

Скобки на самом деле ничего не делают для вас, так как работает следующее:

echo "Hello $NAME";
1
По вопросам рекламы [email protected]