Как найти в тексте и заменить значение по маске?

Есть вот такая строка: Здравствуйте [~iname~] мы знаем что ваша фамилия [~fname~], поэтому [~fname~] [~iname~] мы дарим вам подарок.

Есть такой массив: $arr['person']['iname']="Анатолий"; $arr['person']['fname']="Рожков";

Надо получить такую строку Здравствуйте Анатолий мы знаем что ваша фамилия Рожков, поэтому Рожков Анатолий мы дарим вам подарок.


Ответы (1 шт):

Автор решения: phpBear
<?php
$str = "Здравствуйте [~iname~] мы знаем что ваша фамилия [~fname~], поэтому [~fname~] [~iname~] мы дарим вам подарок.";

$arr = [
 'person' => [
    'iname' => 'Анатолий',
    'fname' => 'Рожков'
  ]
];

foreach( array_keys( $arr['person'] ) as $key ) {
    $str = preg_replace("/\[\~".$key."\~\]/", $arr['person'][ $key ], $str );
}

echo $str."\n";

Результат:

Здравствуйте Анатолий мы знаем что ваша фамилия Рожков, поэтому Рожков Анатолий мы дарим вам подарок.
→ Ссылка