2011-07-05 58 views
1
$var1 = 'abc'; 
$var2 = '123'; 

如何從這樣的字符串替換%var1%var2%字符串:替換變量

aaaaaaaa%var1%bbbbbbbbb%var2%ffffffff 

$var1$var2價值?

+2

whaaaaaaat -2 ?? fuuuuuuuuuuu – foo

回答

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); 

我還沒有機會測試此代碼現在,但我認爲,總的原則是聲音:)

+0

你可以發表我如何傳遞數組的例子嗎?我用它替換函數()嗎? – foo

+0

@foo我用第二個例子更新了答案。 – alex

+0

很酷,謝謝 – foo

1

如果我正確地讀你的問題,你想利用字符串文字

'aaaaaaaa%var1%bbbbbbbbb%var2%ffffffff'並更換子var1var2分別與'abc''123'對嗎?在這種情況下,preg_replace應該做的伎倆。