заменить строки переменными - PullRequest
1 голос
/ 06 июля 2011
$var1 = 'abc';
$var2 = '123';

Как я могу заменить %var1 и %var2% из строки, подобной этой:

aaaaaaaa%var1%bbbbbbbbb%var2%ffffffff

со значением $var1 и $var2?

Ответы [ 3 ]

2 голосов
/ 06 июля 2011
$var1 = 'abc';
$var2 = '123';
$subject = 'aaaaaaaa%var1%bbbbbbbbb%var2%ffffffff';

echo str_replace(array('%var1%', '%var2%'), array($var1, $var2), $subject);

// output: aaaaaaaaabcbbbbbbbbb123ffffffff

http://us.php.net/manual/en/function.str-replace.php

2 голосов
/ 06 июля 2011

Предполагая> = PHP 5.3 ...

preg_replace_callback('%(\w+?)%', function($matches) use ($var1, $var2) {
   return $$matches[1][0];
}, $str);

Как видите, вам нужно передать ссылку на каждую из внешних переменных в замыкание.

Возможно, вам лучше создать массив с заменяющими переменными и просто передать этот массив, а затем подписать его ...

preg_replace_callback('%(\w+?)%', function($matches) use ($vars) {
   return isset($vars[$matches[1][0]]) ? $vars[$matches[1][0]] : $matches[0][0];
}, $str);

У меня сейчас нет возможности протестировать этот код, но я верю, что общий принцип - здравый смысл:)

1 голос
/ 06 июля 2011

Если я правильно читаю ваш вопрос, вы хотите взять строковый литерал

'aaaaaaaa%var1%bbbbbbbbb%var2%ffffffff' и заменить подстроки var1 и var2 на 'abc' и '123' соответственно,право?В этом случае preg_replace должно сработать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...