次のような文字列があります。
$data = '
Some string
[code=cpp]
int a = 5;
[/code]
Another string
[code=php]
echo "5";
[/code]';
コードタグ内のデータと言語 (cpp、php、...) の 2 つの引数を取る関数:
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);
しかし、このコードはコードタグの外にテキストを保存しません。