私はpreg_replace_callbackを使用しています。これが私がやろうとしていることです:
$result = '[code]some code here[/code]';
$result = preg_replace_callback('/\[code\](.*)\[\/code\]/is', function($matches){
return '<div>'.trim($matches[1]).'</div>';
}, $result);
アイデアは、 [code]<div>
と[/code]</div>
のすべての一致を に置き換え、それらの間のコードをトリミングすることです。
問題は、たとえば次の文字列にあります。
$result = '[code]some code[/code]some text[code]some code[/code]';
結果に2つの区切られたdivが必要です:
$result = '<div>some code</div>some text<div>some code</div>';
私が得る結果は次のとおりです。
$result = '<div>some code[code]some text[/code]some code</div>';
今、私はその理由を知っています. そして私は正規表現を理解していますが、私は解決策を思いつくことができませんでした. 誰かがそれを機能させる方法を知っていれば、私は非常に感謝します. 皆さんに感謝し、良い一日を.