Ah, dimenticavo, quello che tu scrivi sarebbe corretto se fosse:

$nuovotesto = preg_replace('%(#DIV_INIZIO#)(.*?)(#DIV_FINE#)%si' , '$1$3', $testo);

ma perchè sprecare quelle righe di codice per fare la sostituzione con #DIV_INIZIO# e #DIV_FINE#, quando con una riga fai tutto? Povero server