我有一个看起来像这样的字符串:
$data = '
Some string
[code=cpp]
int a = 5;
[/code]
Another string
[code=php]
echo "5";
[/code]';
还有一个接受 2 个参数的函数:代码标签内的数据和语言(cpp、php、...):
function Foo($data, $lang) { echo ...RESULT...; }
$data
使用我的Foo
函数替换所有代码标签的最佳方法是什么?结果应该是:
$data =
'Some string' .
Foo('int a = 5;', 'cpp') .
'Another string' .
Foo('echo "5";', 'php');
function Foo($matches)
{
echo SOME_ANOTHER($matches[2], $matches[1]);
}
preg_replace_callback('#\[code=(.*?)\](.*?)\[/code\]#si' , 'Foo', $data);
但是此代码不会将文本保存在代码标签之外。