It can be done without regex via the following code:
$openTag = '*open*';
$closeTag = '*close*';
$openTagLength = mb_strlen($openTag);
$closeTagLength = mb_strlen($closeTag);
$subj = '*open* blah blah blah blah blah *close* blah blah *open* blah blah *close* blah blah *close*';
$len = mb_strlen($subj);
$isOpened = false;
$res = '';
for ($i = 0; $i < $len; )
{
if (mb_substr($subj, $i, $openTagLength) === $openTag) {
// found open tag
$res .= $openTag;
$isOpened = true;
$i += $openTagLength;
} elseif (mb_substr($subj, $i, $closeTagLength) === $closeTag) {
// found close tag
if ($isOpened) {
$res .= $closeTag;
} // else skip
$isOpened = false;
$i += $closeTagLength;
} else {
// non-tag
$res .= mb_substr($subj, $i, 1);
$i++;
}
}
echo $res;