$var1 = 'abc';
$var2 = '123';
如何从字符串中替换%var1
和%var2%
:
aaaaaaaa%var1%bbbbbbbbb%var2%ffffffff
的值为$var1
和$var2
?
答案 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
答案 2 :(得分:1)
如果我正确地阅读了你的问题,你想要取字符串文字
'aaaaaaaa%var1%bbbbbbbbb%var2%ffffffff'
并分别用var1
和var2
替换子字符串'abc'
和'123'
,对吧?在这种情况下,preg_replace应该可以解决问题。