用变量替换字符串

时间:2011-07-05 23:35:25

标签: php string variables replace

$var1 = 'abc';
$var2 = '123';

如何从字符串中替换%var1%var2%

aaaaaaaa%var1%bbbbbbbbb%var2%ffffffff

的值为$var1$var2

3 个答案:

答案 0 :(得分:2)

假设> = 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 :(得分:2)

$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 :(得分:1)

如果我正确地阅读了你的问题,你想要取字符串文字

'aaaaaaaa%var1%bbbbbbbbb%var2%ffffffff'并分别用var1var2替换子字符串'abc''123',对吧?在这种情况下,preg_replace应该可以解决问题。