- preg_replace_callback: documentation ( source)
- preg_replace: documentation ( source)
<?php
$txt = <<<'EOD'
{| test1
test2
test3
test4
test5
|}
{| test6
test7
test8
test9
test10
|}
EOD;
echo preg_replace('~ (?: \G (?!\A) | \Q{|\E ) [^|\n]*+ (?s: (?! \Q|}\E | \n\n) . [^|\n]*)*+ \n \K \n+ ~x', '', $txt);
echo PHP_EOL, '---', PHP_EOL;
echo preg_replace_callback('~\Q{|\E .*? \Q|}\E~sx', function ($m) {
return preg_replace('~\n+~', "\n", $m[0]);
}, $txt);